2010-07-04 107 views
1

我正在构建一个使用GDI +绘制图像和形状到表单的C#应用​​程序,但我不知道如何删除它们。比方说,我有一个使用GDI +绘制的可选网格,当用户关闭它时,我想,关闭它,以某种方式删除它,而不会影响工作画布上的其他对象。什么是最好的方法?谢谢!删除GDI +对象

回答

3

一个简单的例子,下降一个CheckBox的形式:

public partial class Form1 : Form { 
    public Form1() { 
     InitializeComponent(); 
     checkBox1.CheckedChanged += new EventHandler(checkBox1_CheckedChanged); 
    } 
    private void checkBox1_CheckedChanged(object sender, EventArgs e) { 
     this.Invalidate(); 
    } 
    protected override void OnPaint(PaintEventArgs e) { 
     if (checkBox1.Checked) { 
      e.Graphics.DrawArc(Pens.Black, this.ClientRectangle, 0, 360); 
     } 
    } 
} 

调用Invalidate()的关键是擦除原始图形,它迫使重新绘制的形式。基类实现的默认OnPaintBackground方法将所有事情都变回战舰灰色。

1

Windows不存储您的位图输出。要删除项目,请使用标志在OnPaint()中有条件地绘制它。将该标志设置为false并在有问题的控件上调用Invalidate()。

1

另外,其他用户表示,我建议只在必要的地区使用Invalidate(region),而不是所有的绘图区域。