void CMy08301Dlg::OnPaint()
{
CPaintDC dc(this);
CDC dcMem;
CBitmap bmpMem;
dcMem.CreateCompatibleDC(&dc);
bmpMem.CreateCompatibleBitmap(&dc,800,480);
dcMem.SelectObject(&bmpMem);
CDC dcMem2;
dcMem2.CreateCompatibleDC(&dcMem);
CBitmap bmpMem2;
CString ok=L"//……//ok.bmp/0";
CString cancel=L"//……//cancel.bmp/0";
bmpMem2.m_hObject=SHLoadDIBitmap(ok);
dcMem2.SelectObject(&bmpMem2);
dcMem.BitBlt(700,350,82,36,&dcMem2,0,0,SRCCOPY); //加载位图ok
//---------------------------------------------------------------------------------------
bmpMem2.m_hObject=SHLoadDIBitmap(cancel);
dcMem2.SelectObject(&bmpMem2);
dcMem.BitBlt(707,8,70,45,&dcMem2,0,0,SRCCOPY); //加载位图cancel
//重复上面三句代码 加载多幅位图
//--------------------------------------------------------------------------------------
dc.BitBlt(0,0,800,480,&dcMem,0,0,SRCCOPY);
bmpMem2.DeleteObject();
dcMem2.DeleteDC();
bmpMem.DeleteObject();
dcMem.DeleteDC();
}
备注:windows桌面系统下:
1.没有SHLoadDIBitmap
2.貌似也不能重复用dcMem2,我定义了多个兼容DC将位图加载到dcMem中。
本文介绍了一个使用MFC实现双缓冲绘图的方法,通过创建兼容设备环境(DC)来提高绘图效率,避免闪烁。具体展示了如何加载位图资源并将其绘制到窗口上,适用于需要频繁更新显示内容的应用场景。
930





