繁体   English   中英

删除GDI +对象

[英]Deleting GDI+ objects

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

一个简单的示例,在窗体上放置一个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方法将所有内容变为灰色。

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

除了其他用户所说的,我建议仅在必要的区域而不是在所有绘图区域使用Invalidate(region)来提高性能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM