HPEN CreatePen(int fnPenStyle. int nWidth. COLORREF crColor)

При этом в памяти выделяется место для хранения структуры типа tagLOGPEN, объявление которой приведено в листинге 11.1.

Листинг 11.1

typedef struct tagLOGPEN
{

UINT lopnStyle: // Стиль линии POINT lopnWidth; // Толщина линии COLORREF lopnColor: // Цвет линии } LOGPEN; Создание элементов контекста Параметр fnPenStyle задает тип и стиль линии для заполнения первых двух полей структуры. Тип может принимать значения PS_COSMETIC и PS_GEOMETRIC.

Предопределенные значения стиля линии приведены в следующем списке: О PS_DASH - штриховая линия; О PS_D0T - пунктирная линия; О PS_DASHDOT - штрихпунктирная линия; О PS_DASHD0TD0T - линия, состоящая из блоков, в которые входят штрих и две последующие точки; О PSJJULL - невидимая линия; О PS_S0LID - сплошная линия; О PS_INSIDEFRAME - толстая линия, которая находится внутри фигуры. В этом случае контур фигуры совпадает не с серединой линии, а с ее внешним краем. Естественно, этот стиль может применяться только для линий толщиной больше единицы.

Тип и стиль при задании параметра можно объединять при помощи побитной операции ИЛИ.

Первые пять вариантов стиля могут объединяться только с типом PS_COSMETIC, а последний стиль можно объединять с PSGEOMETRIC. В файле WINGDI.H можно найти следующее определение:

#define PS_COSMETIC 0x00000000

Это определение показывает, что при создании пера можно не указывать никакого типа. В этом случае будет создано косметическое перо.

Параметр nWi dth задает толщину линии в логических единицах. Если она равна нулю, то формируется линия толщиной в один пиксел. Если толщина линии отличается от 1, то можно применять только стили PS_NULL, PS_S0LID или PSJNSIDEFRAME.

Параметр crCol or содержит трехбайтовый код цвета, в котором три байта задают интенсивности красного, зеленого и синего компонентов цвета. Для задания цвета удобно применять следующий макрос:

#define RGB(r.g.b) \
(C0L0REF)(( (BYTE)(r) | ((WORD)((BYTE)(g) )«8)) | (((DWORD)(BYTE)(b))«16)))

⇐ Предыдущая| |Следующая ⇒