2010-05-14 4 views
0

i besoin d'animer un objet Application Windowsforme invalidate() dans WinForms application

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(); 
} 

mais dans timer2 sa forme toute invalidant. J'ai besoin d'invalider la zone du cercle spécifique seulement.

s'il vous plaît aider à faire une meilleure façon

+1

Ne pas appeler this.CreateGraphics dans la méthode Paint. Utilisez les graphiques qui vous sont fournis dans PaintEventArgs: e.Graphics. –

Répondre

2

Vous pouvez passer un Rectangle (ou mieux, un Region) en tant que paramètre à Invalidate, à infirment que la zone que vous avez besoin de rafraîchir:

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