C# WinForms - вопросы о методе Краски

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

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);
}
5
задан Jeff Yates 7 July 2010 в 14:15
поделиться

2 ответа

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

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

Из MSDN:

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

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

5
ответ дан 14 December 2019 в 01:01
поделиться

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

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

4
ответ дан 14 December 2019 в 01:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: