netlib.narod.ru | < Назад | Оглавление | Далее > |
На бумаге линии рисуют от руки — карандашами, мелками, перьевыми или шариковыми ручками, фломастерами и др. Тип инструмента определяет как минимум цвет и ширину линии. Эти и другие атрибуты линии находятся в ведении класса Pen, поэтому, чтобы нарисовать любую линию, надо задать объект Pen.
Однако сейчас мне не хочется вдаваться в подробное описание перьев. Дело в том, что они могут быть созданы на основе кистей, поэтому всерьез обсуждать перья нельзя в отрыве от этого предмета. В свою очередь кисти можно создать из растровых изображений и графических контуров (graphics paths), а это более сложные разделы программирования графики. Перьям и кистям посвящена глава 17.
Как сказано в главе 3, создать перо некоторого цвета можно так:
Pen pen = new Pen(color);
где color — объект типа Color. Кроме того, можно задействовать преимущества класса Pens со 141 статическим неизменяемым свойством, каждое из которых возвращает объект Pen. Так что Pens.HotPink — допустимый первый аргумент для любого метода рисования линий (хотя при его использовании надо соблюдать умеренность). Полный список имен цветов вы найдете и файле Colors.pdf на компакт-диске, прилагаемом к книге.
У класса SystemPens 15 статических неизменяемых свойств, также возвращающих объекты Pen на основе системных цветов. Но если нужно создать перо, гарантированно видимое на фоне, цвет которого выбран пользователем, следует поставить цвет пера в зависимость от текущего значения свойства ForeColor:
Pen pen = new Pen(ForeColor);
Толщина — еще один аспект перьев, который я хочу упомянуть здесь, — определяется значением изменяемого свойства:
Свойства Pen (выборочно)
Тип | Свойство | Доступ |
float | Width | Чтение/запись |
Кроме того, есть конструкторы Pen, включающие толщину пера как аргумент:
Конструкторы Pen (выборочно)
Pen(Color color) |
Pen(Color color, float fWidth) |
(Чтобы у вас не сложилось впечатления неполноты приводимой мной информации, отмечу, что, кроме показанных выше, есть еще два конструктора Pen. Они отличаются лишь первым аргументом, которым у них является объект Brush.) При использовании первого конструктора создается перо с толщиной 1. Объекты Pen, доступные через классы Pens и SystemPens, также имеют толщину 1. Пока можно считать, что 1 — это 1 пиксел. Однако (как будет сказано в главе 7) реально толщина выражается в глобальных координатах (world coordinates) и подвержена влиянию преобразований (transforms).
Можно создавать перья, толщина которых всегда будет равна 1 пикселу независимо от преобразований. Для этого следует указать в конструкторе толщину 0:
Pen pen = new Pen(color, 0);
или установить свойство Width в 0:
pen.Width = 0;
netlib.narod.ru | < Назад | Оглавление | Далее > |