Нужно ли восстанавливать состояние графики после рисования в переопределении OnPaint (для элемента управления .NET) - PullRequest
1 голос
/ 28 сентября 2010

Рассмотрим следующий переопределенный метод OnPaint для элемента управления .NET:

protected override void OnPaint(PaintEventArgs e)
{
   base.OnPaint(e);
   e.Graphics.RotateTransform(180);

   // lots of drawing code
}

Является ли проблемой то, что я не восстанавливаю состояние объекта e.Graphics по завершении?

В Java это часто делается путем создания копии переданного объекта Graphics, таким образом, переданный объект Graphics не изменяется и нет необходимости восстанавливать его состояние. Аналогичный вопрос Java

Я мог бы добиться этого в .NET с помощью методов Save () / Restore (). Итак, мои вопросы:

  • Это необходимая / лучшая практика в .NET для восстановления графического состояния?
  • насколько дороги методы Save () / Restore ()?

1 Ответ

1 голос
/ 28 сентября 2010

Ну, кто бы ни реализовал событие Paint для элемента управления, он будет немного удивлен.Это может быть допустимо, если имеет смысл, что все всегда вращается, но это вам решать.

Graphics.Save + Restore на моем ноутбуке занимает около 4 микросекундНе о чем беспокоиться, учитывая типичные расходы на рисование.

...