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) );
------解决方案--------------------
图片已经加到资源,应该不会慢啊!
建议 LZ 用 GetTickCount() 测试一下究竟是哪里慢了?
------解决方案--------------------
------解决方案--------------------
建议楼主采用二级缓存去加载图片,
我也有遇到过类似的情况,加载大图确实会比较慢点。
开一个线程去加载图片到缓存,
要用的时候直接取缓存里边的数据会比较快!