2010-05-14 19 views
0

我需要在c#窗口應用表格無效()中的WinForms應用

int l_nCircleXpos = 9, l_nCircleYpos = 0; 

private void Form1_Paint(object sender, PaintEventArgs e) 
{ 
    Graphics l_objGraphics = this.CreateGraphics(); 
    Pen l_circlePen = new Pen(Color.Blue); 
    SolidBrush l_circleBrush = new SolidBrush(Color.Blue); 
    l_objGraphics.DrawEllipse(l_circlePen, l_nCircleXpos, l_nCircleYpos, 30, 30); 
    l_objGraphics.FillEllipse(l_circleBrush, l_nCircleXpos, l_nCircleYpos, 30, 30); 
    Pen l_rectPen = new Pen(Color.Red); 
} 

private void timer1_Tick(object sender, EventArgs e) 
{ 
    l_nCircleXpos++; 
    l_nCircleYpos++; 
} 

private void timer2_Tick(object sender, EventArgs e) 
{ 
    Invalidate(); 
} 

但在定時器2的整個形式無效的動畫對象。我只需要使特定的圓圈區域無效。

請幫忙做這更好的方式

+1

不要在Paint方法中調用this.CreateGraphics。使用在PaintEventArgs:e.Graphics中提供給您的圖形。 – 2010-05-14 15:48:25

回答

2

你可以通過你需要刷新Rectangle(或更好,一個Region)作爲參數Invalidate,無效只有區域:

Region region = /* region you need to refresh */; 
this.Invalidate(region);