You don't Invalidate
during a paint event. That is just going to cause another paint event, again and again and again forever. You want to Invalidate
when your data changes, and you can also Invalidate
only a region if possible to minimize redraw.
For an animation you will want to call Invalidate
based upon your frame rate. You can use a Timer
or some other mechanism to do so.