Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何画粗线的轮廓?_C++_Windows_Winapi_Graphics - Fatal编程技术网

C++ 如何画粗线的轮廓?

C++ 如何画粗线的轮廓?,c++,windows,winapi,graphics,C++,Windows,Winapi,Graphics,我想画一条粗线的轮廓,那是用几何笔画的。直线可以是多边形或曲线,但为了简单起见,我使用的是直线 给定两个点变量A和B,以下代码在A和B之间绘制一条16像素宽的黑色线条,带有圆形端盖: LOGBRUSH lb = {BS_SOLID, clBlack, 0}; HPEN Pen = ExtCreatePen(PS_GEOMETRIC | PS_SOLID | PS_ENDCAP_ROUND, 16, &lb, 0, NULL); HPEN OldPen = SelectObject(

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

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

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);
其想法是将上述代码放置在和之间,并使用1像素笔绘制粗线的轮廓。但是,它没有绘制轮廓(图像中的绿线),而是在a和B之间绘制一条1像素的线(图像中的红线)

有没有办法解决这个问题?

定义路径后使用:

widePath
功能将当前路径重新定义为如果使用当前选择的笔在给定设备上下文中笔划路径,则将绘制的区域


我不知道你是否可以在这里使用它,我知道在3D模型上绘制轮廓的一种方法是将模型放大几%,使用所有黑色纹理绘制,然后在顶部以正常比例使用正确的纹理再次绘制模型。也许你可以画一条18像素厚的绿色线,然后在顶部画一条16像素的背景色线?@rustyx
widepath
after
EndPath
修复了它。谢谢你的帮助!