删除GDI +对象

时间:2010-07-04 18:44:26

标签: c# winforms gdi+

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

3 个答案:

答案 0 :(得分: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 :(得分:1)

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

答案 2 :(得分:1)

此外,其他用户说,我建议仅在必要的区域使用Invalidate(region),而不是所有绘图区域。