CPen::CreatePen
使用指定的样式、宽度和画笔属性创建一个逻辑化妆提供或几何形状钢笔,并将它附加到 CPen 对象。
BOOL CreatePen(
int nPenStyle,
int nWidth,
COLORREF crColor
);
BOOL CreatePen(
int nPenStyle,
int nWidth,
const LOGBRUSH* pLogBrush,
int nStyleCount = 0,
const DWORD* lpStyle = NULL
);
参数
nPenStyle
为钢笔指定样式。有关可能值列表,请参见。CPen 构造函数的 nPenStyle 参数。nWidth
指定钢笔的宽度。对于 CreatePen的第一个版本,因此,如果该值为 0,无论该映射模式,如组件单位的宽度始终为 1 像素。
对于 CreatePen的第二个版本,因此,如果 nPenStyle 是 PS_GEOMETRIC,该宽度 (以逻辑单位给定。如果 nPenStyle 是 PS_COSMETIC,必须将宽度为 1。
crColor
包含钢笔的一个 RGB 颜色。pLogBrush
指向 LOGBRUSH 结构。如果 nPenStyle 是 PS_COSMETIC,LOGBRUSH 结构的 lbColor 成员指定钢笔的颜色,并 LOGBRUSH 结构的 lbStyle 成员必须设置为 BS_SOLID。如果 nPenStyle 是 PS_GEOMETRIC,所有成员必须使用指定钢笔的 brush 属性。nStyleCount
在双字单元测试指定该长度,lpStyle 数组。如果 nPenStyle 不是 PS_USERSTYLE,此值必须为零。lpStyle
指向双字值。第一个值在用户定义的样式指定第一个短划线的长度,第二个值指定第一个间距的长度,依此类推。如果 nPenStyle 不是 PS_USERSTYLE,该指针必须是 NULL。
返回值
非零,如果成功或零,如果方法失败。
备注
CreatePen 的第一个版本初始化具有指定的样式、宽度和颜色的一个钢笔。钢笔可以以后选择作为将向当前钢笔为所有设备上下文。
其钢笔的宽度大于 1 像素应始终具有 PS_NULL、PS_SOLID或 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 myPen1, myPen2;
// Create a solid red pen of width 2.
myPen1.CreatePen(PS_SOLID, 2, RGB(255,0,0));
// Create a geometric pen.
LOGBRUSH logBrush;
logBrush.lbStyle = BS_SOLID;
logBrush.lbColor = RGB(0,255,0);
myPen2.CreatePen(PS_DOT|PS_GEOMETRIC|PS_ENDCAP_ROUND, 2, &logBrush);
要求
标头: afxwin.h