C # WinForms - метод рисования вопросов - PullRequest
5 голосов
/ 07 июля 2010

Я не уверен, как лучше всего использовать графику - я должен прикрепить свои классы к основному событию Paint и затем рисовать, или лучше вызвать его из overidden OnPaint void, как это? Я имею в виду, нормально ли это делать так:

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);
}

Ответы [ 2 ]

5 голосов
/ 07 июля 2010

Рекомендуется, чтобы элементы управления переопределяли методы On..., а не подписывались на свои собственные события.

Вы должны вызвать base.OnPaint, чтобы убедиться, что метод Paint запущен правильно.

Из MSDN :

Метод OnPaint также позволяет производным классам обрабатывать событие, не подключая делегат.Это предпочтительный метод для обработки события в производном классе.

Примечания для наследников
При переопределении OnPaint в производном классе обязательно вызовите метод OnPaint базового класса, чтобы зарегистрированные делегаты получили событие.

4 голосов
/ 07 июля 2010

Это не имеет значения;обе работают.Переопределение OnPaint в теории может быть немного быстрее, но это не является разницей, которую кто-нибудь заметит.Microsoft рекомендует переопределить OnPaint, но на самом деле это не мотивирует.

Вам необходимо вызвать base.OnPaint, потому что этот метод вызовет обработчики, прикрепленные к событию Paint.

...