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),而不是所有的繪圖區域。