2011-03-29 29 views
-1

我在我的表單上繪製了一些東西圖形和塗料事件

但是,在最小化和恢復窗體後,窗體會被清除。問題是什麼?

而這種代碼是錯誤的:(JIT說:)

private void Form1_Paint(object sender, PaintEventArgs e) 
{ 
    grForm = e.Graphics; 
} 

由於約束grForm的剪裁都小於零或過大。

+1

你能更具體一點嗎? – 2011-03-29 19:03:34

+0

當我最小化它時,我該怎麼做這個表格不會被清除? – 2011-03-29 19:05:58

+0

JIT說什麼? – gideon 2011-03-29 19:08:39

回答

1

您不能存儲您在Paint事件中獲得的e.Graphics對象。它只有在Paint事件運行時纔有效,它在此之後就被處理了。使用表單的CreateGraphics()方法也不起作用,只要表單需要重新繪製就會被清除。例如,當你最小化和恢復它。

您必須使用窗體的Invalidate()方法強制Paint事件再次運行。然後畫出任何需要繪製的東西。如果你想讓繪圖持久化,那麼你必須繪製一個位圖。使用Paint事件中的e.Graphics.DrawImage()繪製位圖。這不是最好的方法,只需要時重新繪製就是最好的方法。