Форма invalidate () в приложении WinForms - PullRequest
0 голосов
/ 14 мая 2010

мне нужно анимировать объект в приложении c # windows

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

, но в timer2 это делает всю форму недействительной. мне нужно аннулировать только определенную область круга.

, пожалуйста, помогите сделать это лучше

1 Ответ

2 голосов
/ 14 мая 2010

Вы можете передать Rectangle (или лучше, Region) в качестве параметра Invalidate, чтобы сделать недействительной только область, которую необходимо обновить:

Region region = /* region you need to refresh */;
this.Invalidate(region);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...