русс | укр

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
{
private Graphics graph;
...
}

а в конструкторі форми провести зв'язування з реальним об'єктом:
graph = this.CreateGraphics();

Потім всюди в програмі, де потрібно працювати з графікою, слід використовувати глобальний для форми об'єкт graph і його методи. Є інший спосіб отримання цього об'єкта - обробники деяких подій отримують об'єкт класу Graphics серед переданих їм аргументів. Наприклад, в оброблювачі події Paint, займається перемальовуванням будь-якого візуального компонента – від кнопки до форми - цей об'єкт можна отримати так:

protected override void OnPaint(object sender, PaintEventArgs e)
{
Graphics gr = e.Graphics; // отримання графічного контексту
gr.DrawLine(...); // малювання в ньому лінії
}

Для отримання цього об'єкта можна використовувати і статичні методи самого класу Graphics.

Методи класу Graphics

У класу Graphics велика кількість методів і властивостей. Варто згадати лише про деяких з них. Група статичних методів класу дозволяє створити об'єкт цього класу, задаючи, наприклад, описувач (handle) контексту пристрою.

Для малювання найбільш важливі три групи методів. До першої відноситься перевантажений метод DrawString, що дозволяє виводити тексти в графічному режимі. Другу групу складають методи Draw - DrawEllipse, DrawLine, DrawArc та інші, що дозволяють кольоровим пір'ям (об'єктом класу Pen) малювати геометричні фігури: лінії, різні криві, прямокутники, багатокутники, еліпси та інше. До третьої групи відносяться методи Fill - FillEllipse, FillPie, FillRectangle та інші, що дозволяють намалювати і зафарбувати фігуру пензлем. Кисті (об'єкти класів, похідних від Brush), можуть бути різні - суцільні, візерункові, градієнтні.
Клас Pen

Методам групи Draw класу Graphics, рисующим контур фігури, потрібно передати перо - об'єкт класу Pen. У конструкторі цього класу можна задати колір пера і його товщину (частіше кажуть "ширину пера"). Колір задається об'єктом класу (структурою) Color. Для вибору підходящого кольору можна використовувати згадуване вище діалогове вікно Color або одне з численних статичних властивостей класу Color, повертає потрібний колір. Можливо і безпосереднє завдання елементів структури у вигляді комбінації RGB - трьох кольорів - червоного, зеленого і блакитного. Замість створення нового пера з допомогою конструктора можна використовувати спеціальний клас зумовлених системних пір'я.
Клас Brush

Клас Brush, задає кисті, влаштований більш складно. Почну з того, що клас Brush є абстрактним класом, так що створювати кисті цього класу не можна, але можна створювати кисті класів-нащадків Brush. Таких класів п'ять - вони задають кисть:

  • SolidBrush - для суцільного зафарбовування області заданим кольором;
  • TextureBrush - для зафарбовування області заданої картинкою (image);
  • HatchBrush - для зафарбовування області визначеним візерунком;
  • LinearGradientBrush - для суцільного зафарбовування з переходом від одного кольору до іншого, де зміна відтінків визначається лінійним градієнтом;
  • PathGradientBrush - для суцільного зафарбовування з переходом від одного кольору до іншого, де зміна відтінків задається більш складним шляхом.

Перші два класи кистей знаходяться в просторі імен System.Drawing, решта - System.Drawing.Drawing2D.

Переглядів: 2466






© 2012 ci-sharp.ru При використанні матеріалу пряме iндексуюче посилання на сайт ОБОВ'ЯЗКОВЕ.
Права строго захищені нормами міжнародного права, інтелектуальної власності та авторського права.