Окт 13

Геометрические перья

Геометрические перья рисуют линии, которые могут различаться толщиной, стилем, заливкой, типом завершения и типом соединения.
Толщина геометрического пера задается в логических координатах. Если в простых перьях единица длины, соответствующая изображению точки, равна 3 пиксела, то в геометрических перьях единица длины в режиме отображения ММ_ТЕХТ равна 1 пиксел. Но с увеличением толщины линии пропорционально увеличивается и длина точки, равно как и длина других отрезков, составляющих линию. Также эти размеры могут изменяться в соответствии с мировыми преобразованиями или режимом отображения.
Из рисунка также видно, что геометрические перья по умолчанию имеют завершение, определяемое стилем PS_ENDCAP_ROUND. Но тип завершения можно изменить, если при вызове функции ExtCreatePen передать первый параметр. Линии нарисованы при помощи функции LineTo. Для большей четкости картины в местах стыковки вторая линия нарисована более светлым пером, чем первая и третья линии. Тонкие белые линии, нанесенные поверх фигуры, обозначают положение базовых осей каждой линии.
Учтите, что если вы будете рисовать при помощи функции LineTo все три линии пером одного и того же цвета в режиме рисования R2_X0RPEN, то на стыках из-за повторной прорисовки образуются «провалы».
Функция Polyline относится к группе функций GDI, позволяющих выполнить рисование нескольких линий и кривых за один вызов. Функции этой группы обладают тем замечательным свойством, что обеспечивают плавную стыковку линий.
Перейдем теперь к рассмотрению рисования замкнутых фигур.
Любая замкнутая фигура, например прямоугольник или эллипс, рисуется в Windows с использованием двух графических объектов, выбранных в контекст устройства. Первым объектом является текущее перо, которым обводится контур фигуры, а вторым объектом — текущая кисть, используемая для заливки (закрашивания) внутренней области фигуры. Контекст устройства содержит кисть по умолчанию, которой является сплошная кисть белого цвета. Обычно фон окна тоже имеет белый цвет, поэтому, рисуя замкнутые фигуры с кистью по умолчанию, нельзя увидеть эффект заливки. В связи с этим стоит сначала научиться создавать и использовать различные кисти, а уже потом знакомиться с функциями, рисующими замкнутые фигуры.