我正在尝试使用win32中的自定义笔 - PS_DASH / PS_DASHDOT - 使用默认颜色。但是我想根据某些条件在程序的主体中更改笔的颜色。基于我到目前为止所阅读的示例 - 我没有遇到过更改自定义笔颜色的示例。
有人能举例说明如何解决这个问题吗?
此外 - 任何人都可以澄清 - 如果可以更改已创建的自定义笔的宽度?除了默认创建自定义笔之外,找不到任何语法。
由于
我找到的参考链接: Change GDI pen colour
http://devmaster.net/forums/topic/13685-win32-setdcpencolor-problem/
HPEN dashPen = CreatePen(PS_DASH, 1, RGB(255, 255, 0));
HPEN dashDotPen = CreatePen(PS_DASHDOT, 1, RGB(255, 255, 0));
// changing color works with DC_PEN but want something similar for custom pen
SelectObject(hdc, GetStockObject(DC_PEN));
SetDCPenColor(hdc, RGB(250, 0, 0));
MoveToEx(hdc, 100, 100, NULL);
LineTo(hdc, 200, 200);
// Changing of Pen color doesn't seem to work for the custom pen
SelectObject(hdc, dashPen);
SetDCPenColor(hdc, COLOR_BLUE);
MoveToEx(hdc, 150, 150, NULL);
LineTo(hdc, 250, 250);
SelectObject(hdc, dashDotPen);
SetDCPenColor(hdc, COLOR_GRAY);
MoveToEx(hdc, 175, 175, NULL);
LineTo(hdc, 275, 275);
DeleteObject(dashPen);
DeleteObject(dashDotPen);
答案 0 :(得分:0)
设置DC笔颜色会改变DC笔的颜色,这不是您的自定义笔。
如果要更改自定义笔,请使用所需参数创建一个新笔,调用SelectObject将其放入DC,然后在旧版上调用DestroyObject。
DC笔是一种特殊的笔,适用于需要简单实心笔且能够轻松更改颜色的笔。与DC画笔一样,它为常见情况提供了便利,而不是用于修改自定义GDI对象的通用工具。