wince 下mfc基于对话框程序 加载bmp慢,该如何处理
wince 下mfc基于对话框程序 加载bmp慢
开发wince智能设备应用程序,mfc基于对话框的程序,用bmp格式图片做对话框背景,
图片800*480像素,大小在1M左右,
对话框显示时图片加载很慢,怎么优化啊?
代码如下:
OnInitDialog()中加载图片
m_Bkgnd =::LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP1) );
------解决方案--------------------
标准的写法就是类似于你这样了。
要快,为何不将CBitmap bmBkgnd;作为类成员,放在OnInitDialog()中加载呢?!
根本不需要Attach和Detach这么麻烦
------解决方案--------------------
可以考虑使用DirectDraw里面的方法,速度会有明显变化。
开发wince智能设备应用程序,mfc基于对话框的程序,用bmp格式图片做对话框背景,
图片800*480像素,大小在1M左右,
对话框显示时图片加载很慢,怎么优化啊?
代码如下:
- C/C++ code
OnPaint() { CPaintDC dc(this); CDC memDC; CBitmap bmBkgnd; bmBkgnd.Attach( m_Bkgnd ); memDC.CreateCompatibleDC(&dc); CBitmap *pOldBm = memDC.SelectObject( &bmBkgnd ); BITMAP bm; bmBkgnd.GetObject(sizeof(bm), &bm); dc.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &memDC, 0, 0, SRCCOPY ); memDC.SelectObject( pOldBm ); bmBkgnd.Detach(); CDialog::OnPaint(); }
OnInitDialog()中加载图片
m_Bkgnd =::LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP1) );
------解决方案--------------------
标准的写法就是类似于你这样了。
要快,为何不将CBitmap bmBkgnd;作为类成员,放在OnInitDialog()中加载呢?!
根本不需要Attach和Detach这么麻烦
------解决方案--------------------
可以考虑使用DirectDraw里面的方法,速度会有明显变化。