C# - Головна Простір імен
► System (5)► Microsoft (1) Для учнів (початківців)
► Відео уроки (4)► Навчання (177) ► Приклади програм (19) ► Секрети Сі Шарп (4) Для професіоналів
► Навчання (6)► Приклади програм (1) |
Робота з графікою на платформі .NET.NET Framework реалізує розширений графічний інтерфейс GDI+, який володіє широким набором можливостей. Але для малювання в формах достатньо мати три об'єкти - перо, пензель і контекст області, в якій здійснюється малювання. Клас GraphicsКлас Graphics - це основний клас, необхідний для виведення графіки, він і є контекстом області для відображення графіки. Крім цього, клас Graphics надає безліч методів для зображення геометричних фігур та різних графічних об'єктів. Клас Graphics, так само, як і інші розглянуті тут класи для пір'я і кистей, знаходяться в просторі імен Drawing. Об'єкти цього класу залежать від контексту об'єкта або пристрою, (графіка не обов'язково відображається на формі Вашого застосування, вона може виводитися на кнопці, панель або в вікно для введення тексту, але крім цього - на принтер, плоттер або інші пристрої), тому створення об'єктів класу Graphics виконується не традиційним способом - без виклику конструктора класу. Створюються об'єкти спеціальними методами різних класів. Наприклад, метод CreateGraphics класу Control, від якого успадковуються всі візуальні елементи користувальницького інтерфейсу – повертає об'єкт, асоційований з висновком графіки у відповідний елемент. При малюванні безпосередньо у формі можна оголосити в класі форми поле, що описує екземпляр класу Graphics: public class SomeForm : Form а в конструкторі форми провести зв'язування з реальним об'єктом: Потім всюди в програмі, де потрібно працювати з графікою, слід використовувати глобальний для форми об'єкт graph і його методи. Є інший спосіб отримання цього об'єкта - обробники деяких подій отримують об'єкт класу Graphics серед переданих їм аргументів. Наприклад, в оброблювачі події Paint, займається перемальовуванням будь-якого візуального компонента – від кнопки до форми - цей об'єкт можна отримати так: protected override void OnPaint(object sender, PaintEventArgs e) Для отримання цього об'єкта можна використовувати і статичні методи самого класу Graphics. Методи класу GraphicsУ класу Graphics велика кількість методів і властивостей. Варто згадати лише про деяких з них. Група статичних методів класу дозволяє створити об'єкт цього класу, задаючи, наприклад, описувач (handle) контексту пристрою. Для малювання найбільш важливі три групи методів. До першої відноситься перевантажений метод DrawString, що дозволяє виводити тексти в графічному режимі. Другу групу складають методи Draw - DrawEllipse, DrawLine, DrawArc та інші, що дозволяють кольоровим пір'ям (об'єктом класу Pen) малювати геометричні фігури: лінії, різні криві, прямокутники, багатокутники, еліпси та інше. До третьої групи відносяться методи Fill - FillEllipse, FillPie, FillRectangle та інші, що дозволяють намалювати і зафарбувати фігуру пензлем. Кисті (об'єкти класів, похідних від Brush), можуть бути різні - суцільні, візерункові, градієнтні. Методам групи Draw класу Graphics, рисующим контур фігури, потрібно передати перо - об'єкт класу Pen. У конструкторі цього класу можна задати колір пера і його товщину (частіше кажуть "ширину пера"). Колір задається об'єктом класу (структурою) Color. Для вибору підходящого кольору можна використовувати згадуване вище діалогове вікно Color або одне з численних статичних властивостей класу Color, повертає потрібний колір. Можливо і безпосереднє завдання елементів структури у вигляді комбінації RGB - трьох кольорів - червоного, зеленого і блакитного. Замість створення нового пера з допомогою конструктора можна використовувати спеціальний клас зумовлених системних пір'я. Клас Brush, задає кисті, влаштований більш складно. Почну з того, що клас Brush є абстрактним класом, так що створювати кисті цього класу не можна, але можна створювати кисті класів-нащадків Brush. Таких класів п'ять - вони задають кисть:
Перші два класи кистей знаходяться в просторі імен System.Drawing, решта - System.Drawing.Drawing2D. Переглядів: 2466 |