描述
ExtCreatePen函数创建一个具有指定样式,宽度和画笔属性的逻辑化妆或几何笔。
C++ 语法
HPEN ExtCreatePen( __in DWORD dwPenStyle, __in DWORD dwWidth, __in const LOGBRUSH *lplb, __in DWORD dwStyleCount, __in const DWORD *lpStyle ); |
PowerBASIC 语法
FUNCTION ExtCreatePen ( _ BYVAL dwPenStyle AS DWORD, _ BYVAL dwWidth AS DWORD, _ BYREF lplb AS LOGBRUSH, _ BYVAL dwStyleCount AS DWORD, _ BYREF lpStyle AS DWORD _ ) AS DWORD |
参数
dwPenStyle
[in]指定类型,样式,端点和连接属性的组合。通过使用按位OR运算符组合来自每个类别的值。
笔类型可以是以下值之一。
值 |
含义 |
PS_GEOMETRIC |
笔是几何的。 |
PS_COSMETIC |
笔是化妆品。 |
钢笔风格可以是以下值之一。
值 |
含义 |
PS_ALTERNATE |
Windows NT / 2000 / XP/ VISTA / Windows 7的:笔设置每隔一个像素。(此款式仅适用于化妆笔) |
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/ VISTA / Windows 7的:笔使用用户提供的样式阵列。 |
PS_INSIDEFRAME |
笔是坚实的当使用该笔在任何GDI绘图功能中使用一个边界矩形时,图形的尺寸将会缩小,从而使其完全符合边框矩形,同时考虑到笔的宽度。这仅适用于几何笔。 |
端盖仅用于几何笔。端帽可以是以下值之一。
值 |
含义 |
PS_ENDCAP_ROUND |
端盖是圆形的。 |
PS_ENDCAP_SQUARE |
端盖是正方形。 |
PS_ENDCAP_FLAT |
端盖是平的。 |
连接仅用于几何笔。连接可以是以下值之一。
值 |
含义 |
PS_JOIN_BEVEL |
连接是斜面的。 |
PS_JOIN_MITER |
当它们在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]指定lpStyle数组的长度(DWORD单位)。如果dwPenStyle不是PS_USERSTYLE,则此值必须为零。
Windows NT / XP / Vista / Windows 7:样式计数限制为16。
lpStyle
[in]指向数组的指针。第一个值指定用户定义样式中第一个虚线的长度,第二个值指定第一个空格的长度,依此类推。如果dwPenStyle不是PS_USERSTYLE,则该指针必须为NULL。
如果在线绘制期间超出lpStyle数组,指针将重置为数组的开头。当这种情况发生时,dwStyleCount是一个偶数,破折号和空格的模式重复。但是,如果dwStyleCount为奇数,则当指针复位时,模式反转 - lpStyle的第一个元素现在指的是空格,第二个元素指的是破折号,等等。
返回值
如果函数成功,则返回值是标识逻辑笔的句柄。
如果函数失败,返回值为零。
备注
几何笔可以具有任何宽度,并且可以具有画笔的任何属性,例如抖动和图案。化妆笔只能是单个像素宽,并且必须是纯色,但是化妆笔一般比几何笔更快。
几何笔的宽度总是以世界单位指定。化妆笔的宽度总是为1。
端盖和连接仅用于几何笔。
应用程序创建逻辑笔后,可以通过调用SelectObject功能将该笔选择到设备上下文中。在将笔选择到设备上下文中之后,可以用于绘制线条和曲线。
如果dwPenStyle为PS_COSMETIC和PS_USERSTYLE,则lpStyle数组中的条目以样式单位指定破折号和空格的长度。样式单元由笔用于绘制线的设备定义。
如果dwPenStyle是PS_GEOMETRIC和PS_USERSTYLE,则lpStyle数组中的条目以逻辑单位指定破折号和空格的长度。
如果dwPenStyle是PS_ALTERNATE,样式单位将被忽略,并且每隔一个像素都被设置。
如果LOGBRUSH结构LOGBRUSH所指向的LOGBRUSH结构的lbStyle成员是BS_PATTERN,该结构的lbHatch成员指向的位图不能是DIB部分。DIB部分是由CreateDIBSection创建的位图。如果该位图是DIB部分,则ExtCreatePen功能失败。
当应用程序不再需要指定的笔时,应调用DeleteObject功能删除笔。
ICM:笔创建时不进行颜色管理。然而,当笔被选择到启用ICM的设备上下文中时,执行颜色管理。
引用文件 #INCLUDE Once
WinGdi.inc(包括Windows.inc)