Я не уверен, каков лучший способ использовать графику - я должен присоединить свои классы к основному событию 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);
}
Рекомендуется, чтобы элементы управления переопределяли On...
методы, а не подписываться на собственные события.
Вы должны вызвать base.OnPaint
, чтобы убедиться, что метод Paint
срабатывает правильно.
Метод OnPaint также позволяет производным классам обрабатывать событие без присоединения делегата. Это предпочтительная техника для обработки события в производном классе.
Примечания для наследников
При переопределении OnPaint в производном классе, не забудьте вызывать метод OnPaint базового класса чтобы зарегистрированные делегаты получили событие.
На самом деле это не имеет значения; оба варианта работают. Переопределение OnPaint
может быть немного быстрее в теории, но это не та разница, которую кто-то заметит. Microsoft рекомендует переопределять OnPaint
, но на самом деле не мотивирует это.
Вам нужно вызвать base.OnPaint
, потому что этот метод вызовет обработчики, прикрепленные к событию Paint
.