2

我正在尝试在 win32 中使用自定义笔 - PS_DASH/PS_DASHDOT - 使用默认颜色。但是我想根据某些条件在程序主体中更改笔的颜色。根据我到目前为止阅读的示例 - 我还没有遇到更改自定义笔颜色的示例。

谁能给我一个关于如何去做的例子?

另外-任何人都可以澄清-是否可以更改已创建的自定义笔的宽度?除了默认创建自定义笔之外,找不到任何语法。

谢谢

我找到的参考链接: 更改 GDI 笔颜色

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);
4

1 回答 1

1

设置 DC 笔颜色会更改 DC 笔的颜色,这不是您的自定义笔。

如果要更改自定义笔,请使用所需参数创建一个新笔,调用 SelectObject 将其放入 DC,然后在旧笔上调用 DeleteObject。

DC 笔是一种特殊的笔,当您想要一支能够轻松更改颜色的普通实心笔时。与 DC 画笔一样,它是为常见情况提供便利,而不是用于修改自定义 GDI 对象的通用工具。

于 2017-03-20T21:22:17.340 回答