对于双缓冲,直接上代码
void CScoreView::OnPaint()
{
CPaintDC dc(this);
获取位置
CRect rcClient;
GetClientRect(&rcClient);
创建位图
CBitmap BufferImage;
BufferImage.CreateCompatibleBitmap(&dc,rcClient.Width(),rcClient.Height());
//创建 DC
CDC BufferDC;
BufferDC.CreateCompatibleDC(&dc);
BufferDC.SelectObject(&BufferImage);
Draw(&BufferDC,rcClient.Width(),rcClient.Height());
//绘画界面
dc.BitBlt(0,0,rcClient.Width(),rcClient.Height(),&BufferDC,0,0,SRCCOPY);
//清理资源
BufferDC.DeleteDC();
BufferImage.DeleteObject();
}
主要注意的地方就是先在内存中新建一个dc ->BufferDC,用内存dc去绘画
在函数 draw(&BufferDC,rcClient.Width(),rcClient.Height())中画我们自己的内容就可以了