CPen::CreatePen

BOOL CreatePen( int nPenStyle, int nWidth, COLORREF cfColor );
BOOL CreatePen( int nPenStyle, int nWidth, const LOGBRUSH* pLogBrush, int nStyleCount = 0, const DWORD* lpStyle = NULL );

返回值:如果成功则返回非零值或逻辑画笔的句柄;否则返回0。

参数:
nPenStyle指定画笔的风格。其可能取值的列表,请参见CPen构造函数中的nPenStyle参数。
nWidth指定画笔的宽度。
·对于CreatePen的第一个版本来说,如果这个值为0,则不管是什么映射模式,以设备单位表示的宽度总是一个像素。
·对于CreatePen的第二个版本,如果nPenStyle是PS_GEOMETRIC,则宽度以逻辑单位给出。如果nPenStyle是PS_COSMETIC,则宽度必须设置为1。

crColor包含画笔的一个RGB颜色。
pLogBrush指向一个LOGBRUSH结构。如果nPenStyle是PS_COSMETIC,则此LOGBRUSH结构的lbColor成员指定画笔的颜色,此LOGBRUSH结构的lbStyle成员必须设置为BS_SOLED。如果nPenStyle为PS_GEOMETRIC,则此结构的所有成员都必须用于指定画笔画刷属性。
nStyleCount指定lpStyle数组的长度(以双字为单位)。如果nPenStyle不是PS_USERSTYLE,这个值必须是零。
lpStyle指向一个双字值的数组。第一个值指定一个用户定义的风格中第一段虚线的长度,第二个值指定第一段空白的长度,如此等等。如果nPenStyle不是PS_USERSTYLE,则这个指针必须为NULL。

说明:
CreatePen的第一个版本用指定的风格、宽度和颜色来初始化一支画笔。此画笔以后可选作为任何设备环境的当前画笔。
宽度大于1个像素的画笔总是具有PS_NULL,PS_SOLED或PS_INSIDEFRAME风格。
如果画笔具有PS_INSIDEFRAME风格和某一不匹配逻辑调色板中颜色的颜色,则此画笔用一个混合色来进行绘制。PS_SOLID画笔风格不能用一个混合色来创建一支画笔。当画笔的宽度小于或等于1时,PS_INSIDEFRAME风格等同于PS_SOLID风格。
CreatePen的第二个版本初始化一支具有指定的风格、宽度和刷子属性的逻辑装饰画笔或几何画笔。一支装饰画笔的宽度总是1;几何画笔的宽度总是由世界单位指定。当应用程序创建了一支逻辑画笔之后,它可通过调用CDC::SelectObject函数来将此画笔选入一个设备环境中。当一支画笔被选入一个设备环境之后,它就可以用于画直线或曲线。
·如果nPenStyle为PS_COSMETIC和PS_USERSTYLE,则lpStyle数组中的项指定风格单位中虚线和空白的长度。一个风格单位由使用此画笔画线的设备定义。
·如果nPenStyle为PS_GEOMETRIC和PS_USERSTYLE,则lpStyle数组中的项指定虚线和空白的长度(用逻辑单位表示)。
·如果nPenStyle为PS_ALTERNATE,则忽略风格单位而交替设置像素。
当一个应用程序不再需要一支给定的画笔时,它将调用CGdiObject::DeleteObject成员函数或销毁CPen对象,以使资源不再使用。当一支画笔被选入一个设备环境后,应用程序就不能删除这支画笔了。

请参阅:
CPen::CreatePenIndirect, CPen::CPen, CGdiObject::DeleteObject, LOGBRUSH