Малювання фігур за допомогою onpaint

C # для професіоналів

Для кого призначена ця книга

Основні теми книги

Платформа .NET пропонує нове середовище, в якій можна розробляти практично будь-який додаток, що діє під керуванням Windows, а мова C # - нова мова програмування, створена спеціально для роботи з .NET.

У цій книзі представлені всі основні концепції мови C # і платформи .NET. Повністю описується синтаксис C #, наводяться приклади побудови різних типів додатків з використанням C # - створення додатків і служб Windows, додатків і служб WWW за допомогою ASP.NET, а також елементів управління Windows і WWW Розглядаються загальні бібліотеки класів .NET, зокрема, доступ до даними за допомогою ADO.NET і доступ до служби Active Directory із застосуванням класів DirectoryServices.

Ця книга призначена для досвідчених розробників, можливо, мають досвід програмування на VB, C ++ або Java, але не використовували раніше в своїй роботі мову C # і платформу .NET. Програмістам, що застосовують сучасні технології, книга дасть повне уявлення про те, як писати програми на C # для платформи .NET.

• Всі особливості мови C #

• C # і об'єктно-орієнтоване програмування

• Програми та служби Windows

• Створення web-сторінок і web-служб за допомогою ASP NET

• Доступ до даних за допомогою ADO NET

• Створення розподілених додатків за допомогою NET Remoting

• Інтеграція з COM, COM + і службою Active Directory

Малювання фігур за допомогою OnPaint

Якщо наведене вище пояснення змусило вас подумати, що малювання свого власного користувальницького інтерфейсу буде дуже складним завданням, то не варто хвилюватися. Це не так. Були наведені різні деталі процесу, для того щоб ви зрозуміли, з якими проблемами зіткнетеся. Але змусити додаток перемалювати себе, коли необхідно, - в дійсності легке завдання.

Коли виникає необхідність, Windows повідомляє додаток, що потрібно виконати деяку перерисовку зображення, ініціюючи подія Paint. Цікаво те, що клас Form вже реалізував обробник для цієї події, тому не потрібно створювати свій власний. Можна скористатися цією архітектурою, виходячи з факту, що обробник Form1 для події Paint викликатиме в процесі обробки віртуальний метод OnPaint (). передаючи в нього єдиний параметр PaintEventArgs. Це означає, що для виконання малювання необхідно просто перевизначити метод OnPaint (). Ми створимо для цього новий приклад, званий DrawShapes. Як і раніше, визначаємо DrawShapes як додаток Windows, що генерується за допомогою Visual Studio.NET, і додамо наступний код класу Form1:

protected override void OnPaint (PaintEventArgs e) Graphics dc = e.Graphics;
Pen BluePen = new Pen (Color.Blue, 3);
dc.DrawRectangle (BluePen, 0, 0, 50, 50);
Pen RedPen = new Pen (Color.Red, 2);
dc.DrawEllipse (RedPen, 0, 50, 80, 60);
base.OnPaint (e);
>

Відзначимо, що метод OnPaint () оголошений як protected. OnPaint () зазвичай використовується всередині класу, тому немає необхідності будь-якого іншого коду поза класом знати про його існування.

PaintEventArgs є похідним класом від EventArgs. використовуваного зазвичай для передачі інформації про події. PaintEventArgs має два додаткових властивості, з яких найбільш важливим є екземпляр Graphics. вже налаштований і оптимізований для малювання необхідної частини вікна. Це означає, що нам не потрібно викликати CreateGraphics (). щоб отримати контекст пристрою в методі OnPaint (). - він уже існує. Ми незабаром розглянемо інше додаткове властивість, воно містить більш детальну інформацію про те, яка область вікна дійсно потребує перемальовуванні.

У даній реалізації методу OnPaint () ми спочатку отримуємо посилання на об'єкт Graphics з PaintEventArgs. потім малюємо фігури так само, як це робилося раніше. В кінці викликається метод OnPaint () базового класу. Цей крок є важливим. Ми переопределили OnPaint () для виконання нашого власного малювання, але можливо, що Windows повинен виконати свою власну роботу в процесі малювання, і така робота буде пов'язана з методом OnPaint () в одному з базових класів .NET.

Для цього прикладу може виявитися, що видалення виклику base.OnPaint () не робить ніякого впливу на роботу, але ніколи не намагайтеся видалити виклик. Це може привести до некоректного завершення роботи Windows і непередбачуваних результатів.

OnPaint () буде також викликатися, коли додаток вперше запускається і вікно програми виводиться в перший раз, тому немає необхідності дублювати код малювання в конструкторі, хоча як і раніше потрібно задати тут колір фону і всі інші властивості форми. Це зазвичай задається або додаванням команди явно, або завданням кольору у вікні властивостей Visual Studio.NET:

private void InitializeComponent () this.components = new System.ComponentModel.Container ();
this.Size = new System.Drawing.Size (300, 300);
this.Text = "Draw Shapes";
this.BackColor = Color.White;
>

Виконання цього коду спочатку дає ті ж результати, що і в попередньому прикладі, за винятком того, що тепер додаток поводиться правильно, коли вікно мінімізується або ховається його частина.

Схожі статті