I am not sure what is the best way of using graphics - should I attach my classes to main form Paint event and then do the drawing, or it is better to call it from overidden OnPaint void like this? I mean, is it OK to do that like this:
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e) //what is this good for? My app works without it as well
Graphics g=e.Graphics;
DrawEnemies(g);
UpdateHUD(g);
DrawSelectedUnit(g);
}
It is recommended that controls override the On...
methods rather than subscribe to their own events.
You should call base.OnPaint
to ensure the Paint
method is fired properly.
The OnPaint method also enables derived classes to handle the event without attaching a delegate. This is the preferred technique for handling the event in a derived class.
Notes to Inheritors
When overriding OnPaint in a derived class, be sure to call the base class's OnPaint method so that registered delegates receive the event.