CPen::CPen

构造 CPen 对象。

CPen( );
CPen(
   int nPenStyle,
   int nWidth,
   COLORREF crColor 
);
CPen(
   int nPenStyle,
   int nWidth,
   const LOGBRUSH* pLogBrush,
   int nStyleCount = 0,
   const DWORD* lpStyle = NULL 
);

参数

  • nPenStyle
    指定钢笔的样式。在构造函数的第一个版本的此参数可以是下列值之一:

    • PS_SOLID 创建实心钢笔。

    • PS_DASH 创建一个虚线钢笔。有效,仅当钢笔的宽度为1或更小,在组件度量单位。

    • PS_DOT 创建一个虚线钢笔的。有效,仅当钢笔的宽度为1或更小,在组件度量单位。

    • PS_DASHDOT 使用交替短划线和点创建一个钢笔。有效,仅当钢笔的宽度为1或更小,在组件度量单位。

    • PS_DASHDOTDOT 使用交替短划线和double点创建一个钢笔。有效,仅当钢笔的宽度为1或更小,在组件度量单位。

    • PS_NULL 创建一个空钢笔。

    • PS_INSIDEFRAME 创建例如绘制在Windows GDI输出功能生成的闭合的形状内部帧的一行指定一个边框的一个笔(,EllipseRectangleRoundRectPieChord 成员函数)。在此样式使用Windows GDI未指定一个边框的输出功能(例如,LineTo 成员函数),钢笔的绘图区未由帧限制。

    CPen 构造函数的第二个版本指定类型,样式,终止线帽的组合,并连接属性。应按位组合可以使用或运算符,从每个类别的值(|)。钢笔类型可为下列值之一:

    • PS_GEOMETRIC 创建一个几何图形钢笔。

    • PS_COSMETIC 创建一个装饰性的钢笔。

      CPen 构造函数的第二个版本添加 nPenStyle的以下钢笔样式:

    • PS_ALTERNATE 创建设置其他像素的一个钢笔。(此样式为装饰性的笔只适用)。

    • PS_USERSTYLE 创建使用用户提供的一个样式数组的一个钢笔。

      终止线帽可为下列值之一:

    • PS_ENDCAP_ROUND 终止线是圆形的。

    • PS_ENDCAP_SQUARE 终止线是正方形。

    • PS_ENDCAP_FLAT 终止线保持不变。

      连接可为下列值之一:

    • PS_JOIN_BEVEL Joins为、。

    • 并在 SetMiterLimit 函数时,设置的当前限制内PS_JOIN_MITER Joins是斜接。如果连接超出此限制,其转换为、。

    • PS_JOIN_ROUND Joins是圆形的。

  • nWidth
    指定钢笔的宽度。

    • 对于构造函数的第一个版本,因此,如果该值为0,无论该映射模式,如组件单位的宽度始终为1像素。

    • 对于构造函数的第二个版本,因此,如果 nPenStyle 是 PS_GEOMETRIC,该宽度(以逻辑单位给定。如果 nPenStyle 是 PS_COSMETIC,必须将宽度为1。

  • crColor
    包含钢笔的一个RGB颜色。

  • pLogBrush
    指向 LOGBRUSH 结构。如果 nPenStyle 是 PS_COSMETICLOGBRUSH 结构的 lbColor 成员指定钢笔的颜色,并 LOGBRUSH 结构的 lbStyle 成员必须设置为 BS_SOLID。如果 nPenStyle 是 PS_GEOMETRIC,所有成员必须使用指定钢笔的brush属性。

  • nStyleCount
    在双字单元测试指定该长度,lpStyle 数组。如果 nPenStyle 不是 PS_USERSTYLE,此值必须为零。

  • lpStyle
    指向双字值。第一个值在用户定义的样式指定第一个短划线的长度,第二个值指定第一个间距的长度,依此类推。如果 nPenStyle 不是 PS_USERSTYLE,该指针必须是 NULL

备注

如果使用构造函数没有参数,必须初始化 CreatePenCreatePenIndirect的结果 CPen 对象,或者 CreateStockObject 成员函数。

如果使用接受参数的构造函数,则进一步初始化并不是必需的。带参数的构造函数可以引发异常,如果遇到错误,则,而无参数的构造函数将总是成功。

示例

// Create a solid red pen of width 2.
CPen myPen1(PS_SOLID, 2, RGB(255,0,0));

// Create a geometric pen.
LOGBRUSH logBrush;
logBrush.lbStyle = BS_SOLID;
logBrush.lbColor = RGB(0,255,0);
CPen myPen2(PS_DOT|PS_GEOMETRIC|PS_ENDCAP_ROUND, 2, &logBrush);

要求

Header: afxwin.h

请参见

参考

CPen选件类

层次结构图

CPen::CreatePen

CPen::CreatePenIndirect

CGdiObject::CreateStockObject