如何解决在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函数将其删除。