- •Лабораторная работа № 8.
- •1. Теоретическая часть
- •1.1 Пространство имен System.Drawing
- •1.3 Работа с цветом
- •1.4 Работа со шрифтами
- •1.5 Работа с перьями
- •1.6 Работа с кистью
- •1.7 Вывод изображений
- •2. Практическая часть
- •2.1 Сеансы вывода графики
- •2.2 Вывод графических объектов без события Paint
- •2.3 Создание приложения с возможностью выбора шрифта
- •2.4 Вывод информации об установленных шрифтах
- •2.5 Работа с перьями
- •2.6 Работа с «наконечниками» перьев
- •2.7 Работа с кистью
- •2.8 Вывод изображений
- •2.9 Графический редактор
- •3. Задания
1.1 Пространство имен System.Drawing
Подавляющее большинство типов для работы с графикой, которые потребуются, находятся именно в пространстве имен System.Drawing. Некоторые наиболее важные типы этого пространства имен представлены в табл. 8.2.
Таблица 8.2. Типы пространства имен System.Drawing
Тип |
Назначение |
Bitmap |
Инкапсулирует файл изображения и определяет набор методов для выполнения различных операций с этим изображением. |
Brush Brushes SolidBrush SystemBrushes TextureBrash |
Объекты Brush (кисть) используются для заполнения пространства внутри геометрических фигур (например, прямоугольников, эллипсов или многоугольников). Тип Brush — это абстрактный базовый класс, остальные типы являются производными от Brush и определяют разные наборы возможностей. Дополнительные типы Brush определены в пространстве имен System. Drawing. Drawing2D |
Color SystemColors ColorTranslator |
Структура Color определяет набор статических полей, которые могут быть использованы для настройки цвета. Тип ColorTranslator позволяет создавать новый цвет (объект Color) на основе внешнего представления этого цвета (цвета Win32, типа OLE_COLOR, констант цвета в HTML и т. п.) |
Font FontFamiy |
Тип Font инкапсулирует характеристики шрифта (имя, размер, начертание и т. п.). FontFamily представляет набор шрифтов, которые относятся к одному семейству, но имеют некоторые небольшие отличия. |
Graphics |
Этот важнейший класс определяет набор методов для вывода текста, изображений и геометрических фигур. Можно считать этот тип эквивалентом типаHDCв Win32 |
Icon SystemIcons |
Эти классы предназначены для работы с пользовательскими и системными значками |
Image ImageAnimator |
Image ~ это абстрактный базовый класс, который обеспечивает возможности типов Bitmap,IconиCursor. ImageAnimator позволяет производить показ изображений (типов, производных от Image) через указанные вами интервалы времени |
Pen Pens SystemPens |
Pen (перо) — это класс, при помощи которого можно рисовать прямые и кривые линии. В классе Реп определен набор статических свойств, при помощи которых можно получить объект Реп с заданными свойствами (например, с установленным цветом) |
Point PointF |
Эти структуры обеспечивают работу с координатами точки. Point работает со значениями типа int, a PointF — со значениями типа float |
Таблица 8.2. Типы пространства имен System.Drawing (продожение)
Rectangle RectangleF |
Эти структуры предназначены для работы с прямоугольными областями (int/noat) |
Size SizeF |
Эти структуры обеспечивают работу с размерами (высотой и шириной). Size использует значения типа int, a SizeF — типа float. |
StringFormat |
Этот тип используется для форматирования текста (определения выравнивания, междустрочного интервала и т. п.) |
Region |
Определяет область, занятую геометрической фигурой. |
1.2 Система координат по умолчанию в GDI+
Перед тем как начать знакомиться с тонкостями вывода графических объектов, необходимо разобраться в используемой в GDI+ системе координат. Как и в API Win32, в GDI+ можно выбирать из множества систем координат. Система, принятая по умолчанию, использует в качестве единицы измерения пикселы, а в качестве исходной точки — верхний левый угол. Координата X определяет смещение вправо, а координата Y — смещение вниз (рис. 8.1)
Рис. 8.1 Система координат, используемая по умолчанию
При помощи свойства PageUnitобъекта Graphics мы можем выбрать другую единицу измерения, которая будет применяться к этому объекту. Для свойства PageUnit используются значения из перечисления GraphicsUnit (табл. 8.3).
Таблица 8.3Перечисление GraphicsUnit
Значение |
Единица измерения |
Display |
1/75 часть дюйма |
Document |
1/300 часть дюйма |
Inch |
Дюйм |
Millimeter |
Миллиметр |
Pixel |
Пиксель |
Point |
1/72 часть дюйма |
В GDI+ для изменения точки отсчета системы координат используется метод TranslateTransform(), определенный в классе Graphics. Например, установить точку отсчета в положение 100.100 относительно системы координат по умолчанию можно следующим образом:
protected override void OnPaint(PaintEventArgs e)
{
e.Graphics.TranslateTransform(100, 100);
}