开发者

C# WinForms - Paint method questions

I am not sure what is the best way of using graphics - should I attach my cla开发者_如何转开发sses 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.

From MSDN:

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.


It doesn't really matter; both work. Overriding OnPaint might be ever so slightly faster in theory, but it's not a difference that anyone will notice. Microsoft recommends overriding OnPaint but doesn't really motivate this.

You need to call base.OnPaint because this method will invoke handlers attached to the Paint event.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜