我有一個用戶控件,它包含一個按panel1名稱排列的面板。有在panel1_paint
其中提請面板上的一些線指示,我會在一個窗口的形式通過以下行來執行漆事件:在繪製一些圖形之後爲控件添加動畫效果
注:DrawLines已UserControl1.CS定義
public void DrawLines()
{
...
...
panel1.Invalidate();
}
我不知道爲什麼這不會運行,也許它畫線,然後面板刷新,這使面板被清除。 所以我改變了我的代碼如下:
public void DrawLines()
{
...
...
panel1_Paint(this, new PaintEventArgs(panel1.CreateGraphics(),
panel1.ClientRectangle));
}
這工作nice.it得出了一些線在面板上,現在主要部分是: 有,他們會在運行時面板上創建一些對象兒童。我想將它們移動到面板上(例如,假設有火焰顆粒)。所以當我將它們移動(動畫)timer
時,Paint事件的e.Graphics
所繪製的線條將被清除並移除,如果面板上的任何對象(粒子)移過它們。 那麼,我該如何避免這種情況?!我的Invalidation有問題嗎? 如何在面板上同時顯示線條和移動粒子? 面板已經完成了圖形,但爲什麼通過移動它的對象,圖形將被刪除?
的createGraphics()是問題。在Paint()事件中,使用提供的「e.Graphics」進行繪製,所有應該都可以。然後你可以使用你的原始代碼「panel1.Invalidate();」 –
你能舉個例子嗎? –