2010-05-14 22 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);