关于Picturebox中无法清除GDI+绘图问题
在PictureBox上实时显示图像,并绘制直线而搜索框不能变化的功能
1.思路
- 由于winform的Picturebox控件,并不支持一边重绘GDI一边保持搜索框。遂选择把2个Picturebox控件叠放在一起
- 第一个Picturebox作为父控件,第二个作为子控件。实时变化的图像和直线放在第一个控件上,第2个控件放搜索框,
并可以移动拉伸做调整功能。
2.步骤
- 首先拖一个Panel做背景,第一个Picturebox控件的BackColor设置为black,第二个控件设为透明Transparent。
- 在窗体的构造函数内设置父控件:
pictureBox2.Parent = pictureBox1;
- 设置控件背景图和Graphics:
示例代码
//初始化
Bitmap image1 = new Bitmap(pictureBox1.Width,pictureBox1.Height);
Bitmap image2 = new Bitmap(pictureBox2.Width,pictureBox2.Height);
Graphics g1 = Graphics.FromImage(image1);
Graphics g2 = Graphics.FromImage(image2);
pictureBox1.Image = image1;
pictureBox2.Image = image2;
//清除背景。注意:一定要先清理子控件的绘图,再清理父控件的绘图。不然,子控件绘图清除不了😂
public void ClearPictureBoxDraw()
{
g2.Clear(Color.TransParent);
g1.Clear(Color.Black);
pictureBox1.Image = image1;
pictureBox2.Image = image2;
}
3.总结
- 绘图清除问题:查阅了好多资料并多次尝试,子控件中的绘图先清除,父控件再清除。--记录项目中踩过的坑