Функция ExtCreatePen создает логическое косметическое или геометрическое перо, которое имеет заданный стиль, толщину и атрибуты кисти.
Синтаксис
HPEN ExtCreatePen( DWORD dwPenStyle, // стиль пера DWORD dwWidth, // толщина пера CONST LOGBRUSH *lplb, // атрибуты кисти DWORD dwStyleCount, // длинна массива настроек стиля CONST DWORD *lpStyle // массив пользовательского стиля ); |
Параметры
Тип пера может быть одним из следующих значений.
Значение | Предназначение |
---|---|
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 |
Нет |
Замечания по платформе |
Не имеется |