写一个简单的MFC Picture Control中双缓冲绘图Demo,直接上代码:
CDC MyDC;
CBitmap bmp;
CRect rect;
CDC *dc = m_picDraw.GetDC(); //获得picture控件DC
m_picDraw.GetClientRect(&rect); //picture控件位图
MyDC.CreateCompatibleDC(dc); //依附窗口DC pDC创建兼容内存DC
bmp.CreateCompatibleBitmap(dc, rect.Width(), rect.Height()); //创建内存兼容位图
MyDC.SelectObject(&bmp); //把内存位图选进内存DC中用来保存在内存DC中绘制的图形
MyDC.FillSolidRect(rect, RGB(255, 255, 255)); //背景填充白色,否则可能为黑色
MyDC.FillSolidRect(rect, dc->GetBkColor());
/*************下面是绘图的代码******************/
MyDC.MoveTo(10, 10); MyDC.LineTo(100, 100);
/*************上面是绘图的代码******************/
dc->BitBlt(rect.left, rect.top, rect.Width(), rect.Height(), &MyDC, 0, 0, SRCCOPY);
bmp.DeleteObject();
MyDC.DeleteDC();
ReleaseDC(dc);