2014-01-30 2 views
3

У меня есть элемент управления PictureBox, событие Paint которого я использую для отображения некоторых иллюстраций в зависимости от состояния приложения. Мне нужно установить следующие свойства:Настройка параметров Graphics.QualityXXX в центре, а не изнутри PictureBox.Paint

private void PictureBox_Paint (object sender, System.Windows.Forms.PaintEventArgs e) 
{ 
    e.Graphics.CompositingMode = CompositingMode.SourceOver; 
    e.Graphics.CompositingQuality = CompositingQuality.HighQuality; 
    e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; 
    e.Graphics.SmoothingMode  = SmoothingMode.HighQuality; 
    e.Graphics.TextRenderingHint = TextRenderingHint.AntiAlias; 
} 

Это прекрасно работает, но эти свойства устанавливаются каждый раз, когда событие Pain запускаемый который довольно часто. Есть ли способ централизованно установить эти свойства? Обратите внимание, что размер элемента управления PictureBox может измениться, если пользователь изменит размер окна.

Я знаю, что я могу связать изображение с элементом управления PictureBox и вместо этого сохранить ссылку на графический объект для этого изображения. Но я хотел узнать, возможно ли выше, без явного изображения.

+2

Установка этих свойств занимает 0,00000001% времени, необходимого для фактического рисования. Держи это как есть. Если он повторяется во многих событиях «Pain» (nice typo!), Тогда создайте метод где-нибудь «void SetGraphics (Graphics graphics)», чтобы установить их сразу. – Sinatr

ответ

2

Я не думаю, что есть лучшее решение, если только, как указал @Sinatr, вам нужны одинаковые настройки для нескольких событий Paint. Но это просто реорганизация общего вызова.

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

0

Возможно, подумайте об использовании шаблона Mapper. Он часто используется в корпоративных приложениях, но я думаю, что он полезен в домашних проектах.

Хорошо известная библиотека Automapper, но вы можете просто реализовать свой собственный картограф без избыточных функций.

Смежные вопросы