关于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.总结

  • 绘图清除问题:查阅了好多资料并多次尝试,子控件中的绘图先清除,父控件再清除。--记录项目中踩过的坑
posted @ 2022-11-03 20:13  新凉别处暑  阅读(127)  评论(0编辑  收藏  举报