读书人

双缓冲绘图颜色出错请教是咋回事

发布时间: 2012-06-12 14:21:25 作者: rapoo

双缓冲绘图颜色出错,请问是怎么回事?
继承了CStatic的类CPlot,想在上面画图,结果颜色显示有问题,下面是代码,请大家帮忙看看,谢谢!

[code=C/C++][/code]
void CPlot::OnPaint()
{
CPaintDC dc(this); // device context for painting

// 创建与dc相兼容的内存DC
CDC MemDC;
MemDC.CreateCompatibleDC(&dc);
// 为内存绘图设备创建一个兼容位图
if(m_MemBitmap.m_hObject == NULL)
m_MemBitmap.CreateCompatibleBitmap(&MemDC, m_rctClient.right, m_rctClient.bottom);
// 内存DC选择内存位图
MemDC.SelectObject(m_MemBitmap);
// 填充背景
MemDC.FillSolidRect(m_rctClient,RGB(108,108,108)); //<-出错,显示颜色为黑色
// 但是如果填充RGB(255,255,255)
// 则是白色



// 画一条线
CPen pen;
pen.CreatePen(PS_SOLID,20,RGB(255,0,0));
CPen*pOldPen=(CPen*)MemDC.SelectObject(&pen);
MemDC.MoveTo(0,0); //<-出错,画黑线是黑色,画红线也是黑色
MemDC.LineTo(60,60); // 画白线是白色
MemDC.SelectObject(pOldPen);


//复制
dc.BitBlt(m_rctClient.left,m_rctClient.top, m_rctClient.right, m_rctClient.bottom, &MemDC, 0, 0, SRCCOPY);
//删除内存DC
MemDC.DeleteDC();
}
[/code]

[解决办法]
从电驴源码,里面抠出来的。

读书人网 >VC/MFC

热点推荐