如何绘制粗线的轮廓?

时间:2020-08-26 09:19:44

标签: c++ windows winapi graphics

我想绘制一条粗线的轮廓,该轮廓是用几何笔绘制的。这条线可以是多边形或曲线,但为简单起见,我使用的是直线。

enter image description here

给出两个POINT变量A和B,以下代码绘制了一条16像素宽的黑色线条,在A和B之间带有圆形端盖:

LOGBRUSH lb = {BS_SOLID, clBlack, 0};

HPEN Pen = ExtCreatePen(PS_GEOMETRIC | PS_SOLID | PS_ENDCAP_ROUND, 16, &lb, 0, NULL);

HPEN OldPen = SelectObject(DC, Pen);

MoveToEx(DC, A.x, A.y, NULL);
LineTo  (DC, B.x, B.y);

SelectObject(DC, OldPen);

想法是将上面的代码放在BeginPath(DC)EndPath(DC)之间,并使用StrokePath(DC)用1像素的笔绘制粗线的轮廓。但是,它没有绘制轮廓(图像中的绿线),而是在A和B之间绘制了1像素的线(图像中的红线)。

有什么办法可以解决这个问题?

1 个答案:

答案 0 :(得分:1)

在定义路径后使用WidenPath

WidenPath函数将当前路径重新定义为如果使用当前在给定设备上下文中选择的笔来描画路径,则将绘制的区域。

相关问题