使用双缓冲显示位图
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、清理
{
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、清理
相关文章推荐
- 如果你使用BitBle复制位图,结果显示出来是黑色的...
- 利用双缓冲技术将位图像素数据写到DIB位图中并在指定的窗口显示(主要使用CreateDIBSection和BitBlt方法)
- ArchieOpenGL教程第11课:使用位图字体 在屏幕上显示字体
- VC中使用MFC显示位图的方法
- emWin使用资料收集(二) ----- 使用emWin和BmpCvt工具显示位图
- 使用gdal读取图像数据,然后用构建gdi+位图显示
- 使用SDL_Surface显示BMP位图
- mfc 利用HBITMAP 和CBITMAP 显示位图文件(双缓冲)
- 从资源中加载显示位图,通过双缓冲的方法显示
- 使用Canvas类显示位图
- 使用16位汇编显示bmp位图
- 使用vc显示bmp位图
- MFC中使用文本控件实现图标和位图的显示
- CImage显示位图与CDC双缓冲冲突,使用路径层解决.
- emWin 2天速成实例教程014_BMP位图图片显示以及位图皮肤的使用方法
- 双缓冲显示位图
- 【DirectX学习】使用DirectDraw在windows窗口上显示位图
- mfc 位图显示方法 使用cbitmap和hbitmap
- MFC双缓冲显示位图
- 利用双缓冲技术将位图像素数据写到DIB位图中并在指定的窗口显示(主要使用CreateDIBSection和BitBlt方法)