Win32 - GDI - 更改自定义笔颜色
问题描述:
我想在默认颜色的win32 - PS_DASH/PS_DASHDOT中使用自定义笔。但是,我想根据某些条件在程序主体中更改笔的颜色。根据我迄今阅读的示例 - 我还没有遇到自定义笔颜色更改的示例。Win32 - GDI - 更改自定义笔颜色
任何人都可以给我一个如何去做这个例子吗?
此外 - 任何人都可以澄清 - 如果有可能改变已经创建的自定义笔的宽度?除了缺省创建自定义笔之外,找不到任何此语法。
感谢
参考链接我发现: 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);
答
设置DC画笔颜色改变DC笔的颜色,这不是非此即彼您的自定义笔。
如果要更改定制笔,请使用所需的参数创建一个新的,并调用SelectObject以将其放入DC中,然后调用旧的DestroyObject。
DC笔是一种特殊的笔,用于当您想要一个简单而坚固的笔,并且能够轻松更改颜色。像DC笔刷一样,这对于常见的情况很方便,而不是用于修改自定义GDI对象的通用工具。
只需制作一支新笔,轻松自在。 – 2013-05-11 13:51:57
目前还不清楚什么智力模型让你认为'SetDCPenColor'改变了DC笔以外的任何其他颜色。 DC笔是唯一一个可以在创建后更改颜色的笔。 (因为它不是一支笔,而是一支虚拟笔。) – 2013-05-11 13:56:59
感谢您的答复。我对这个win32编程相对来说比较陌生,并且有一种印象是自定义笔的颜色一旦创建就可以改变。它看起来像在GDI中 - 自定义笔的颜色和宽度都不能在创建后更改。会找到一种替代方法来处理这种情况。 – ejuser 2013-05-11 17:14:09