13.1. Введение в Graphics

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

Класс Graphics реализует поверхность рисования и все методы рисования GDI+. GDI расшифровывается как Graphic Device Interface (интерфейс графического устройства), и это понятие хорошо отражает его суть, потому что GDI реализует методы для рисования не только на дисплее, но и на других графических устройствах, например на принтерах. GDI+ стал продолжением первой версии графического интерфейса.

Класс Graphics реализует методы рисования объектов на устройстве дисплея. Самый простой и популярный способ получить объект этого класса — использовать обработчик события Paint. Например, создайте новое приложение и для формы создайте обработчик события Paint. Среда разработки сделает для нас следующую заготовку метода для обработчика событий:

   private void Form1_Paint(object sender, PaintEventArgs e)
   {

   }

Второй параметр — это переменная класса PaintEventArgs, через которую мы получаем два очень важных свойства:

  • ClipRectangle — область, которую нужно перерисовать;
  • Graphics — экземпляр класса Graphics, который представляет собой поверхность рисования. Именно на ней и нужно рисовать.

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

При работе с графикой нужно привыкнуть, что вам придется работать в основном с вещественными (дробными) числами. Сейчас некоторые из вас могут подумать, что дробные числа абсолютно не нужны, — ведь разрешение экрана равно целому количеству пикселов (например, 800600), так откуда берется дробная часть? Тем не менее, дробная часть есть (и вы это вскоре увидите), поэтому большинство структур, задающих размеры или области рисования, имеют на конце названия букву F (от float, плавающая точка).

Давайте пробежимся по основным методам и свойствам класса Graphics, ведь нам предстоит использовать его на протяжении всей главы. Для начала посмотрим на свойства:

  • Clip — регион (прямоугольная область), который определяет область рисования;
  • ClipBounds — область рисования в виде четырехугольника (класс RectangleF);
  • CompositingMode — способ рисования композитных картинок;
  • CompositingQuality — позволяет задать качество отображения композитных изображений;
  • DpiX — горизонтальное разрешение поверхности;
  • DpiY — вертикальное разрешение поверхности;
  • PageScale — масштабирование;
  • PageUnit — единицы измерения для поверхности.

Теперь посмотрим на основные методы класса Graphics. Именно они представляют наибольшую ценность и интерес:

  • Clear() — очистить поверхность рисования и залить ее цветом, указанным в качестве параметра;
  • DrawArc() — нарисовать дугу;
  • DrawBezier() — нарисовать кривую Безье;
  • DrawBeziers() — нарисовать серию (несколько) кривых Безье;
  • DrawCurve() — нарисовать кривую;
  • DrawClosedCurve() — нарисовать замкнутую кривую, конец которой будет соединен с началом кривой;
  • DrawEllipse() — нарисовать эллипс;
  • DrawIcon() — нарисовать значок;
  • DrawImage() — нарисовать картинку;
  • DrawLine() — нарисовать линию;
  • DrawLines() — нарисовать серию линий;
  • DrawPolygon() — нарисовать многоугольник по массиву точек;
  • DrawRectangle() — нарисовать прямоугольник;
  • DrawString() — отобразить строку текста;
  • FillEllipse(), FillPolygon(), FillRectangle(), FillRegion() — залить цветом эл¬липс, многоугольник, прямоугольник или область;
  • FromHwnd() — статичный метод для создания объекта Graphics на основе Hwnd значения компонента;
  • FromImage() — статичный метод для создания объекта Graphics на основе картинки;
  • MeasureString() — рассчитывает размеры строки текста на поверхности при использовании определенного шрифта.

Ограничимся пока этим списком методов. На самом деле их, наверное, в два раза больше, и подробная информация по ним, конечно же, есть в справочной системе MSDN, которая с конца 2008-го доступна на русском языке.

Предыдущая глава

глава 13. Графика

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне