何为双缓冲?
双缓冲自然是相对一般的单缓冲而言的,
单缓冲
那么先从单缓冲开始吧,先上代码((二)MFC学习之贴图 中使用到)
:(代码片段)
初始化:
CClientDC dc(this);
mdc = new CDC;
//创建适配dc
mdc->CreateCompatibleDC(&dc);
mbmp = new CBitmap;
mbmp->m_hObject = LoadImage(0, TEXT("crimer2.bmp"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
//选取位图(选取背景位图)
mdc->SelectObject(mbmpBack);
dc.BitBlt(0,0, 786, 481, mdc, 0, 0, SRCCOPY);//
可以看到:LoadImg(这是将位图加载到内存)
然后selectObject,选取内存中的位图
最后 dc.BitBlt 将内存中的位图绘制到窗口(是只有一次加载到内存的,姑且称之为单缓冲)
再来看看双缓冲示例:
void CMyWnd::OnPaint()
{
这里只能使用CPaintDc
CPaintDC dc(this); // devic