-
CPen类
CPen画笔是一种用来画线及绘制有形边框的工具,用户可以指定它的颜色及厚度,并且可以指定它画实线、点线或虚线。
CPen类,该类封装了Windows图形设备接口(GDI)画笔,主要通过构造函数来创建绘图对象。
- 函数说明
CPen类的构造函数有3个,分别如下:
// Create methods
HPEN CreatePen(int nPenStyle, int nWidth, COLORREF crColor)
HPEN CreatePen(int nPenStyle, int nWidth, const LOGBRUSH* pLogBrush, int nStyleCount = 0, const DWORD* lpStyle = NULL)
HPEN CreatePenIndirect(LPLOGPEN lpLogPen)
HPEN CreatePen(int nPenStyle, int nWidth, COLORREF crColor)
创建画笔函数带有3个参数,nPenStyle设置线形,nWidth设置线宽,crColor设置线的颜色
参数 | 注释 |
---|---|
PS_SOLID | 实线画笔 |
PS_DASH | 虚线画笔,只有当画笔宽度小于等于1个设备单位时才有效 |
PS_DOT | 点画笔,只有当画笔宽度小于等于1个设备单位时才有效 |
PS_DASHDOT | 虚线点画笔,只有当画笔宽度小于等于1个设备单位时才有效 |
PS_DASHDOTDOT | 创建一个双点线画笔,只有当画笔宽度小于等于1个设备单位时才有效 |
PS_NULL | 空线画笔 |
PS_INSIDEFRAME | 创建一个内框线画笔,该画笔可以在Windows GDI输出函数定义的矩形边界所生成的封闭状的边框内绘制直线 |
// 创建实线画笔
CPen solidPen;
solidPen.CreatePen(PS_SOLID, 1, RGB(0x99, 0x99, 0x99));
// 绘制一条直线
HGDIOBJ hOld = ::SelectObject(hDC, (HGDIOBJ)solidPen);
::MoveToEx(hDC, 0, 0, nullptr);
::LineTo(hDC, 100, 100);
::SelectObject(hDC, hOld);// 创建虚线画笔CPen dotPen;dotPen.CreatePen(PS_DOT, 1, RGB(0xCC, 0xCC, 0xCC));dc.SelectPen(dotPen);
// ToDo: 绘制形状
HPEN CreatePen(int nPenStyle, int nWidth, const LOGBRUSH* pLogBrush, int nStyleCount = 0, const DWORD* lpStyle = NULL)
创建画笔函数带有5个参数,nPenStyle设置线形,nWidth设置线宽,pLogBrush设置画刷,nStyleCount指定lpStyle矩阵的长度(如果参数nPenStyle的值不是PS_USRSTYLE,则该参数值必须是0),lpStyle设置自定义风格直线段的长度
// 设置一个宽度为2,实线和白线分别是32和8,的虚线矩形画刷
LOGBRUSH logBrush;
logBrush.lbStyle = BS_SOLID; // 线的类型
logBrush.lbColor = RGB(0xCC, 0xCC, 0xCC); // 线的颜色
DWORD lpStyle[] = { 32, 8, 0}; // 虚线和白线比例,也可以多设置几个
CPen pen;
pen.CreatePen(PS_USERSTYLE | PS_GEOMETRIC | PS_ENDCAP_SQUARE, 2, &logBrush, 2, lpStyle);// 绘制一条宽度为2的虚线
HGDIOBJ hOld = ::SelectObject(hDC, (HGDIOBJ)pen);
::MoveToEx(hDC, 0, 0, nullptr);
::LineTo(hDC, 100, 100);
::SelectObject(hDC, hOld);