首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除GDI+对象

删除GDI+对象
EN

Stack Overflow用户
提问于 2010-07-05 02:44:26
回答 3查看 1.2K关注 0票数 1

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-07-05 03:00:31

一个简单的例子,在表单上放置一个CheckBox:

代码语言:javascript
复制
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方法将所有内容恢复为战舰灰色。

票数 3
EN

Stack Overflow用户

发布于 2010-07-05 02:47:08

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

票数 1
EN

Stack Overflow用户

发布于 2010-07-05 21:02:59

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3175784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档