您的位置:首页 > 其它

使用双缓冲显示位图

2008-12-17 23:00 211 查看
void xxxDlg::ShowBitmap()

{

CDC memDC;

CBitmap bmpShow;

BITMAP bmpInfo;

CDC* pCurDC = GetDC();//得到当前DC

memDC.CreateCompatibleDC(pCurDC);//创建兼容的内存DC

bmpShow.LoadBitmap(bmpResID);//bmpResID为位图资源ID号

bmpShow.GetBitmap(&bmpInfo);

CBitmap* pOldbmp = memDC.SelectObject(&bmpShow);//将位图选入到内存DC中

//此处可以用memDC进行图像绘制,处理等

pCurDC->StretchBlt(0,0,width,height,&memDC,0,0,bmpInfo.bmWidth,bmpInfo.bmHeight,SRCCOPY);

//copy内存DC到屏幕上显示 ,width,height为分别为显示的宽度和高度

memDC.SelectObject(pOldbmp);//恢复旧对象

ReleaseDC(pCurDC);//释放DC

}

双缓冲就是前台缓冲(显示用)和后台缓冲(内存中),在后台中进行处理计算,处理完后将后台缓冲COPY到前台,可以减少屏幕闪烁,但有延时。

绘图步骤:

1、得到当前窗口DC

2、创建兼容的内存DC

3、将位图选入内存DC,选入后可以作进一步的处理

4、copy内存DC到显示设备

5、清理
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: