当前位置: 代码迷 >> WinCE >> mfc 图片加载速度慢有关问题
  详细解决方案

mfc 图片加载速度慢有关问题

热度:384   发布时间:2016-04-28 13:17:31.0
mfc 图片加载速度慢问题
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() 测试一下究竟是哪里慢了?
------解决方案--------------------
探讨

引用:

图片已经加到资源,应该不会慢啊!

建议 LZ 用 GetTickCount() 测试一下究竟是哪里慢了?


bmBkgnd.Attach( m_Bkgnd );应该是执行这句话的时候很慢,
我试了下把这个操作放在OnInitDialog()里,图片显示不出来,但是对话框显示速度很快。
把这个操作放回Onpaint()里就又很慢了……

------解决方案--------------------
建议楼主采用二级缓存去加载图片,
我也有遇到过类似的情况,加载大图确实会比较慢点。
开一个线程去加载图片到缓存,
要用的时候直接取缓存里边的数据会比较快!
  相关解决方案