如何解决在GDI画图中,多次修改画笔的颜色
首先创建个画笔对象:
CPen gPen;
gPen.CreatePen(PS_SOLID, 1, RGB(120,120,130));//一定灰度的画笔〈/br〉
CPen* pOldPen = pDC->SelectObject(&gPen);
由于画笔一旦创建后就无法修改。所以要修改画笔的颜色要用DeleteObject函数将其删除,之后再创建新的画笔。
下面是修改为红色的画笔:
gPen.DeleteObject();
gPen.CreatePen(PS_SOLID,1, RGB(255, 0, 0));
pOldPen = pDC->SelectObject(&gPen);
上面的最后一句一定要加上。不然新创建的画笔颜色不会改变。
这是在单文档程序中写的,在之前的 pDC的由来。如下:
CHelloWordDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
CDC* pDC = GetDC();
分析CreatePen函数
HPEN CreatePen(int nPenStyle, int nWidth, COLORREF crColor);
参数:
nPenStyle:--- Long,指定画笔样式,可以是下述常数之一
PS_SOLID :画笔画出的是实线
PS_DASH :画笔画出的是虚线(nWidth必须不大于1)
PS_DOT :画笔画出的是点线(nWidth必须不大于1)
PS_DASHDOT 画笔画出的是点划线(nWidth必须不大于1)
PS_DASHDOTDOT 画笔画出的是点-点-划线(nWidth必须不大于1)
PS_NULL 画笔不能画图
PS_INSIDEFRAME 由椭圆、矩形、圆角矩形、饼图以及弦等生成的封闭对象框时,画线宽度向内扩展。如指定的准确RGB颜色不存在,就进行抖动处理
nWidth --- Long,以逻辑单位表示的画笔的宽度
crColor --- Long,画笔的RGB颜色
注:画笔一旦创建后不再需要画笔,记得用DeleteObject函数将其删除。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库