其中,iPenStyle参数确定画笔是实线、点线还是虚线,该参数可以是WINGDI.H表头档案中定义的以下识别字,图5-14显示了每种画笔产生的画笔样式。
对於PS_SOLID、PS_NULL和PS_INSIDEFRAME画笔样式,iWidth参数是画笔的宽度。iWidth值为0则意味著画笔宽度为一个图素。现有画笔是一个图素宽。如果指定的是点划线或者虚线式画笔样式,同时又指定一个大於1的实际宽度,那么Windows将使用实线画笔来代替。
CreatePen的crColor参数是一个COLORREF值,它指定画笔的颜色。对於除了PS_INSIDEFRAME之外的画笔样式,如果将画笔选入装置内容中,Windows会将颜色转换为设备所能表示的最相近的纯色。PS_INSIDEFRAME是唯一一种可以使用混色的画笔样式,并且只有在宽度大於1的情况下才如此。
在与定义一个填入区域的函式一起使用时,PS_INSIDEFRAME画笔样式还有另外一个奇特之处:对於除了PS_INSIDEFRAME以外的所有画笔样式来说,如果用来画边界框的画笔宽度大於1个图素,那么画笔将居中对齐在边界框线上,这样边界框线的一部分将位於边界框之外;而对於PS_INSIDEFRAME画笔样式来说,整条边界框线都画在边界框之内。
您也可以通过建立一个型态为LOGPEN(「逻辑画笔」)的结构,并呼叫CreatePenIndirect来建立画笔。如果您的程式使用许多能在原始码中初始化的画笔,那么使用这种方法将有效得多。
要使用CreatePenIndirect,首先定义一个LOGPEN型态的结构:
此结构有三个成员:lopnStyle(无正负号整数或UINT)是画笔样式,lopnWidth(POINT结构)是按逻辑单位度量的画笔宽度,lopnColor (COLORREF)是画笔颜色。Windows只使用lopnWidth结构的x值作为画笔宽度,而忽