Для создании простой анимации достаточно использовать таймер, при тике которого будут изменятся параметры изображения (например, координаты концов отрезка) и обрабочки события Paint для рисования по новым параметрам. При таком подходе не надо заботиться об удалении старого изображения (как в идеологии MS DOS), ведь оно создается в окне заново.
В качестве примера рассмотрим код анимации секундной стрекли часов:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1: Form
{ //описываем переменные достыпные в любом обработчике событий класса Form1
private int x1, y1, x2, y2, r;
private double a;
private Pen pen = new Pen(Color.DarkRed, 2);
public Form1()
{
InitializeComponent();
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
g.DrawLine(pen, x1, y1, x2, y2); //рисуем секундную стрелку
}
private void Form1_Load(object sender, EventArgs e)
{ //определяем цент экрана
x1 = ClientSize.Width / 2;
y1 = ClientSize.Height / 2;
r = 150; //задаем радиус
a = 0; //задаем угол поворота
//определяем конец часовой стрелки с учетом центра экрана
x2 = x1 + (int) (r * Math.Cos(a));
y2 = y1 - (int) (r * Math.Sin(a));
}
private void timer1_Tick(object sender, EventArgs e)
{
a -= 0.1;//уменьшаем угол на 0,1 радиану
//определяем конец часовой стрелки с учетом центра экрана
x2 = x1 + (int)(r * Math.Cos(a));
y2 = y1 - (int)(r * Math.Sin(a));
Invalidate(); //вынудительный вызов перерисовки (Paint)
}
}
}