双缓冲加载位图 WinCE
2011-08-10 04:59
169 查看
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();
}
当前DC dc;
兼容DC1 dcMem;
兼容DC2 dcMem2;
双缓冲:1: 重复利用dcMem2加载位图到dcMem,
2:讲dcMem画面加载至当前dc。
优点:将多幅位图复制到兼容DC1:dcMem中,再复制到当前dc中,不会出现一副副图片依次出现的现象
如果只加载一副图片就没必要双缓冲了。
备注:windows桌面系统下:
1.没有SHLoadDIBitmap
2.貌似也不能重复用dcMem2,我定义了多个兼容DC将位图加载到dcMem中。
转者注:
可以使用
BITMAP bm;
//获取位图大小信息
Bitmap.GetBitmap(&bm);
然后使用bm.bmWidth和bm.bmHeight来控制位图大小
另外,如果调用了Invalidate();,则一定要重载OnEraseBkgnd(CDC* pDC),并返回return TRUE;才不会闪烁!
来源:
/article/9381516.html
{
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();
}
当前DC dc;
兼容DC1 dcMem;
兼容DC2 dcMem2;
双缓冲:1: 重复利用dcMem2加载位图到dcMem,
2:讲dcMem画面加载至当前dc。
优点:将多幅位图复制到兼容DC1:dcMem中,再复制到当前dc中,不会出现一副副图片依次出现的现象
如果只加载一副图片就没必要双缓冲了。
备注:windows桌面系统下:
1.没有SHLoadDIBitmap
2.貌似也不能重复用dcMem2,我定义了多个兼容DC将位图加载到dcMem中。
转者注:
可以使用
BITMAP bm;
//获取位图大小信息
Bitmap.GetBitmap(&bm);
然后使用bm.bmWidth和bm.bmHeight来控制位图大小
另外,如果调用了Invalidate();,则一定要重载OnEraseBkgnd(CDC* pDC),并返回return TRUE;才不会闪烁!
来源:
/article/9381516.html
相关文章推荐
- 双缓冲加载位图 WinCE
- 双缓冲加载位图 WinCE
- 为什么WinCE中LoadBitmap加载位图后无法在其上DrawText和画图?
- 为什么WinCE中LoadBitmap加载位图后无法在其上DrawText?
- WinCE中加载位图的方法
- wince&evc下加载BMP位图文件
- 从资源中加载显示位图,通过双缓冲的方法显示
- WinCE中加载位图的方法
- 从资源中加载显示位图,通过双缓冲的方法显示
- WinCE中加载位图的方法
- 使用二维纹理贴图,从24位位图加载,用vertex方式绘制
- Wince动态加载字体资源
- Java应用程序中加载位图文件的逐步指南
- Bitmap加载大图优化之位图重采样与Bitmap缓存Lru算法分析
- 关于从文件加载位图
- WinCE 存储设备驱动加载_接口调用过程
- wince下如何加载驱动
- 孙鑫VC++深入详解:Lesson6 Part1 -- CheckMenuItem,子菜单项上添加位图,禁用子菜单项,删除整个菜单,和加载菜单
- mfc 利用HBITMAP 和CBITMAP 显示位图文件(双缓冲)
- wince下如何加载驱动