В некоторых ситуациях быстрее и удобнее не рисовать с использованием события рисования, а получать объект Graphics из элемента управления / формы и рисовать его «на». Это может создать некоторые проблемы с непрозрачностью / сглаживанием / текстом и т. Д., Но может стоить того, чтобы не перекрашивать весь шабанг. Что-то вроде:
private void AnimationTimer_Tick(object sender, EventArgs args)
{
// First paint background, like Clear(Control.Background), or by
// painting an image you have previously buffered that was the background.
animationControl.CreateGraphics().DrawImage(0, 0, animationImages[animationTick++]));
}
Я сам использую это в некоторых элементах управления и буферизовал изображения, чтобы «очистить» фон, когда интересующий объект перемещается или должен быть удален.