如果你要画出的线宽度大于1,并且你要使线条显示为虚线的话,你不能使用PS_DASH,PS_DOT或者PS_DASHDOT等预定义的样式了。我们需要自定义一个LOGBRUSH对象,然后使用CreatePen()来实现。
[C++] 纯文本查看 复制代码 LOGBRUSH lb;
lb.lbStyle = BS_SOLID; //按实体样式填充
lb.lbColor = RGB(0, 0, 0); //颜色设为黑色
lb.lbHatch = 0;
DWORD penStyle[2];
penStyle[0] = 1; //实体线部分的长度
penStyle[1] = 2; //空白部分的长度
CPen newpen;
newpen.CreatePen(PS_GEOMETRIC | PS_USERSTYLE, //几何线条样式和用户指定样式
3, //宽度为3
&lb, //逻辑刷子
2, //指定数组长度
penStyle); //画笔样式数组
CClientDC dc(this);
CPen *pOldPen = dc.SelectObject(&newpen);
//你的绘制代码
//例如:dc.MoveTo(10, 10); dc.LineTo(200, 200);
dc.SelectObject(pOldPen); |