关于GDI中画笔的笔帽问题
在GDI+中, 绘制一条直线, 选择不同的画笔, 直线的两个端点的形状可以不同.
在GDI中也是可以的. 在默认情况下, 画笔笔帽是半圆型(如果画笔很粗的时候就可以看得很清楚).
我自己的一个需求就是不使用半圆的笔帽, 需要使用矩形的. 看如下代码
CDC* pDC = GetDC();
LOGBRUSH logBrush;
logBrush.lbStyle = BS_SOLID; // 对应PS_SOLID
logBrush.lbColor = RGB(0, 255, 0); // 画笔颜色
CPen myPen;
// 画笔的形状就是一个 20 * 20 的矩形
myPen.CreatePen( PS_SOLID | PS_GEOMETRIC | PS_ENDCAP_SQUARE , 20, &logBrush);
pDC->SelectObject(&myPen);
pDC->MoveTo(40, 40);
pDC->LineTo(340, 40);
pDC->MoveTo(340, 70);
在GDI+中, 绘制一条直线, 选择不同的画笔, 直线的两个端点的形状可以不同.
在GDI中也是可以的. 在默认情况下, 画笔笔帽是半圆型(如果画笔很粗的时候就可以看得很清楚).
我自己的一个需求就是不使用半圆的笔帽, 需要使用矩形的. 看如下代码
CDC* pDC = GetDC();
LOGBRUSH logBrush;
logBrush.lbStyle = BS_SOLID; // 对应PS_SOLID
logBrush.lbColor = RGB(0, 255, 0); // 画笔颜色
CPen myPen;
// 画笔的形状就是一个 20 * 20 的矩形
myPen.CreatePen( PS_SOLID | PS_GEOMETRIC | PS_ENDCAP_SQUARE , 20, &logBrush);
pDC->SelectObject(&myPen);
pDC->MoveTo(40, 40);
pDC->LineTo(340, 40);
pDC->MoveTo(340, 70);
pDC->LineTo(440, 70);
在myPen.CreatePen(PS_SOLID | PS_GEOMETRIC | PS_ENDCAP_SQUARE, 20, &logBrush);中
是使用::ExtCreatePen创建画笔的, 详细看文档.