Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 删除GDI+;物体_C#_Winforms_Gdi+ - Fatal编程技术网

C# 删除GDI+;物体

C# 删除GDI+;物体,c#,winforms,gdi+,C#,Winforms,Gdi+,我正在构建一个C#应用程序,它使用GDI+在表单上绘制图像和形状,但我不知道如何删除它们。假设我有一个使用GDI+绘制的可选网格,当用户关闭它时,我想关闭它,以某种方式删除它,而不影响工作画布上的其他对象。最好的方法是什么?谢谢 Windows不存储位图输出。要删除项,请使用标志在OnPaint()中有条件地绘制它。将标志设置为false,并对相关控件调用Invalidate() Windows不存储位图输出。要删除项,请使用标志在OnPaint()中有条件地绘制它。将标志设置为false,并对

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

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

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

一个简单的示例,在表单上删除一个复选框:

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方法将所有内容恢复为战舰灰色。

一个简单的示例,在表单上删除一个复选框:

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方法将所有内容恢复为战舰灰色。

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

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