Функция ExtCreatePen


Функция ExtCreatePen создает логическое косметическое или геометрическое перо, которое имеет заданный стиль, толщину и атрибуты кисти.

Синтаксис

HPEN ExtCreatePen(
  DWORD dwPenStyle,     // стиль пера
  DWORD dwWidth,        // толщина пера
  CONST LOGBRUSH *lplb, // атрибуты кисти
  DWORD dwStyleCount,   // длинна массива настроек стиля
  CONST DWORD *lpStyle  // массив пользовательского стиля
);

Параметры

dwPenStyle
[in] Устанавливает комбинацию атрибутов типа, стиля, оконечивания и  соединения. Значения каждой категории атрибутов объединяются, используя оператор - побитовое OR - ИЛИ (|).

Тип пера может быть одним из следующих значений.

 

Значение Предназначение
PS_GEOMETRIC Перо является геометрическим.
PS_COSMETIC Перо является косметическим.

Стиль пера может быть одним из следующих значений.

 
Значение Предназначение
PS_ALTERNATE Windows NT/2000/XP: Перо устанавливается через пиксель. (Этот стиль применим только для косметических перьев).
PS_SOLID Перо является сплошным.
PS_DASH Перо проводит пунктирную линию.

Windows 95: Этот стиль не поддерживается для геометрических линий.

Windows 98/Me: Не поддерживается.

PS_DOT Перо является точечным.

Windows 95/98/Me: Этот стиль не поддерживается для геометрических линий.

PS_DASHDOT Перо имеет чередующиеся черточки и точки.

Windows 95: Этот стиль не поддерживается для геометрических линий.

Windows 98/Me: Не поддерживается.

PS_DASHDOTDOT Перо имеет чередующиеся черточки и двойные точки.

Windows 95: Этот стиль не поддерживается для геометрических линий.

Windows 98/Me: Не поддерживается.

PS_NULL Перо невидимо.
PS_USERSTYLE Windows NT/2000/XP: Перо использует массив параметров, предоставленных пользователем.
PS_INSIDEFRAME Перо является сплошным. Когда это перо используется в какой-либо функции рисования GDI, которая выбирает прямоугольник ограничения, размеры фигуры сжимаются так, чтобы фигура поместилось полностью в прямоугольнике ограничения, принимая во внимание толщину пера. Это применяется только к геометрическим перьям.

Конечный элемент линии определяется только для геометрических перьев. Оконечивающий элемент может быть одним из следующих значений.

 

Значение Предназначение
PS_ENDCAP_ROUND Конец - закруглен.
PS_ENDCAP_SQUARE Конец заканчивается квадратом.
PS_ENDCAP_FLAT Конец - плоский
 

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

Значение Предназначение
PS_JOIN_BEVEL Соединения со снятой фаской.
PS_JOIN_MITER Соединения выполняются под углом 45 градусов, когда они находятся внутри текущего ограничения, установленного функцией SetMiterLimit. Если соединение выходит за пределы этого ограничения, соединение будет скошено.
PS_JOIN_ROUND Соединение - закругленное
 

Windows 95/98/Me: Стили PS_ENDCAP_ROUND, PS_ENDCAP_SQUARE, PS_ENDCAP_FLAT, PS_JOIN_BEVEL, PS_JOIN_MITER и PS_JOIN_ROUND поддерживаются только для геометрических перьев, когда используются для рисования пути.

dwWidth

[in] Устанавливает толщину пера. Если параметр dwPenStyle - PS_GEOMETRIC, толщина дается в логических  единицах измерения. Если dwPenStyle - PS_COSMETIC, толщина должна быть установлена в 1.

lplb

[in] Указатель на структуру LOGBRUSH. Если dwPenStyle - PS_COSMETIC, член структуры lbColor  определяет цвет пера, а член структуры lbStyle  должен быть установлен в BS_SOLID. Если dwPenStyle - PS_GEOMETRIC, все члены должны использоваться, чтобы определять атрибуты кисти пера.

dwStyleCount

[in] Определяет длину, в единицах равных двойному слову (DWORD), массива lpStyle. Это значение должно быть нуль, если dwPenStyle - не PS_USERSTYLE.

lpStyle

[in] Указатель на массив. Первое значение определяет длину первого пунктира в стиле, определяемом пользователем, второе значение определяет длину первого пробела, и так далее. Этот указатель должен быть ПУСТО (NULL), если dwPenStyle - не PS_USERSTYLE.

Если массив lpStyle, в ходе рисования линии, будет превышен, указатель сбрасывается в начало массива. Когда это случается, а член dwStyleCount - четное число, повторяется шаблон пробелов и пунктиров. Однако, если dwStyleCount - нечетное число, шаблон изменяется на противоположный (инвертируется), когда указатель сброшен -, то первый элемент lpStyle теперь представляет пробелы, а второй представляет пунктиры и т.д.

Возвращаемые значения

Если функция завершается успешно, возвращаемое значение - дескриптор, который идентифицирует логическое перо.

Если функция завершается ошибкой, возвращаемое значение равняется нулю.

Windows NT/2000/XP: Чтобы получить дополнительную информацию об ошибке, вызовите GetLastError.

Замечания

Геометрическое перо может иметь любую толщину и может иметь  любой из из атрибутов кисти, таких как сглаживание и узоры. Косметическое перо может быть толщиной только в один пиксель и должно быть сплошного тона, но косметические перья обычно быстрее, чем геометрические перья.

Толщина геометрического пера всегда определяется в пространственных (логических) единицах измерения окружения. Толщина косметического пера - всегда 1.

Оконечивания и соединения определяются только для геометрических перьев.

После того, как приложение создает логическое перо, оно может выбрать это перо в контекст устройства при помощи вызова функция SelectObject. После того, как перо выбрано в контекст устройства, оно может использоваться, чтобы рисовать линии и кривые.

Если dwPenStyle - PS_COSMETIC и PS_USERSTYLE, записи в массиве lpStyle определяют длины пунктиров и пробелов в единицах измерения стиля. Единица измерения стиля определяется устройством, где используется перо, чтобы рисовать линию.

Если dwPenStyle - PS_GEOMETRIC и PS_USERSTYLE, записи в массиве lpStyle определяют длины пунктиров и пробелов в логических единицах измерения.

Если dwPenStyle - PS_ALTERNATE, единицы измерения стиля игнорируются и устанавливаются через пиксель.

Если член lbStyle структуры LOGBRUSH, на которую указывает lplb - BS_PATTERN, точечным рисунком, на который указывает член lbHatch этой структуры не может быть DIB секция. DIB секция - точечный рисунок, созданный CreateDIBSection. Если тот точечный рисунок - DIB секция, функция ExtCreatePen завершается ошибкой.

Когда приложению больше не требуется заданное перо, оно должно вызвать функцию DeleteObject, чтобы удалить его.

ICM: При создании пера, управление цветом не делается. Однако, управление цветом выполняется тогда, когда перо выбирается в контекст устройства со включенным  ICM.

Код примера

Пример смотри в статье Использование перьев.

Смотри также

Обзор Перья, Функции, используемые перьями, CreateDIBSection, CreatePen, CreatePenIndirect, DeleteObject GetObject, LOGBRUSH SelectObject, SetMiterLimit

Размещение и совместимость ExtCreatePen

Windows. NET Server

Да

Windows XP

Да

Windows 2000

Да

Windows NT

Да версии 3.1 и выше

Windows Me

Да

Windows 98

Да

Windows 95

Да

Используемая библиотека

Gdi32.lib

Заголовочный файл

 

- объявлено в

Wingdi.h

- включено в

Windows.h

Unicode

Нет

Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz