Winapi 为多段线()设置笔/颜色?

Winapi 为多段线()设置笔/颜色?,winapi,gdi+,gdi,Winapi,Gdi+,Gdi,我使用不同的WinGDI函数向打印机发送数据,这里使用函数Polyline()发送矢量数据。现在我想为这条多段线设置一种颜色,所以我尝试在调用polyline()之前调用函数SetDCPenColor()和SetDCBrushColor() 不幸的是,它们都没有任何影响,产生的线条仍然是黑色的。那么…这里有什么问题?更改此类多段线颜色的正确功能是什么 谢谢 编辑:不起作用的代码 SetDCPenColor(*pdc,RGB(rval,gval,bval)); Polyline(*pdc,poin

我使用不同的WinGDI函数向打印机发送数据,这里使用函数Polyline()发送矢量数据。现在我想为这条多段线设置一种颜色,所以我尝试在调用polyline()之前调用函数SetDCPenColor()和SetDCBrushColor()

不幸的是,它们都没有任何影响,产生的线条仍然是黑色的。那么…这里有什么问题?更改此类多段线颜色的正确功能是什么

谢谢

编辑:不起作用的代码

SetDCPenColor(*pdc,RGB(rval,gval,bval));
Polyline(*pdc,points,n);

除非在DC中选择了DC笔和/或笔刷,否则设置DC笔和笔刷颜色不会产生任何效果。默认情况下,它们不会被选择到DC中

PAINTSTRUCT ps;
::BeginPaint(hwnd, &ps);
::SetDCPenColor(ps.hdc, RGB(0xFF, 0x00, 0x00));  // has no effect
::MoveToEx(ps.hdc, x0, y0, nullptr);
::LineTo(ps.hdc, x1, y1);
::EndPaint(hwnd, &ps);
要使用DC笔或画笔,首先需要将DC对象选择到DC中

PAINTSTRUCT ps;
::BeginPaint(hwnd, &ps);
auto oldPen = ::SelectObject(ps.hdc, ::GetStockObject(DC_PEN));  // <<<<
::SetDCPenColor(ps.hdc, RGB(0xFF, 0x00, 0x00));  // now this works
::MoveToEx(ps.hdc, x0, y0, nullptr);
::LineTo(ps.hdc, x1, y1);
::SelectObject(ps.hdc, oldPen);  // remember to select it back out
::EndPaint(hwnd, &ps);
PAINTSTRUCT-ps;
::开始油漆(hwnd和ps);

自动oldPen=::SelectObject(ps.hdc,::GetStockObject(DC_PEN));//您是否正在使用SelectObject在设备上下文中选择已创建的笔?如果是,请添加失败的代码。Alex K。参见上面的代码,我只是在绘图之前设置颜色……您需要创建一支钢笔,然后选择它,如中所示。@Alex K。明白了-谢谢!