首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Win32 - GDI -更改自定义笔颜色

Win32 - GDI -更改自定义笔颜色
EN

Stack Overflow用户
提问于 2013-05-11 20:10:21
回答 1查看 5.3K关注 0票数 2

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

有没有人能给我举个例子,告诉我该怎么做?

还有--有没有人能澄清--是否可以改变已经创建的自定义笔的宽度?除了默认创建自定义笔之外,找不到任何其他语法。

谢谢

我找到的参考链接:Change GDI pen colour

http://devmaster.net/forums/topic/13685-win32-setdcpencolor-problem/

代码语言:javascript
运行
复制
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);
EN

回答 1

Stack Overflow用户

发布于 2017-03-21 05:22:17

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

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16496931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档