bitblt加载大位图图片显示时间问题?

wpbjtu   2008-2-17 21:52 楼主
我分别用VC和EVC写了相同的代码,发现在调用bitblt函数的时候调用的时间不一样,分别是15ms和180ms
其中IDB_BITMAP1为800*480的位图
代码如下:
  static DWORD time,oldtime,temp;
  time = ::GetTickCount();
  HDC hDC = ::GetDC(m_hWnd);
  HDC hMemDC = CreateCompatibleDC(hDC);
  HBITMAP hBitmap = ::LoadBitmap(AfxGetApp()->m_hInstance, (LPCTSTR)IDB_BITMAP1);
  hOldBitmap = (HBITMAP)SelectObject(hMemDC, hBitmap);
  ::BitBlt(hDC,0,0,800,480,hMemDC,0,0,SRCCOPY);
  oldtime = ::GetTickCount();
  temp = oldtime - time;
  SelectObject(hMemDC, hOldBitmap);
  DeleteObject(hBitmap);
  DeleteDC(hMemDC);
  DeleteDC(hDC);
  CString cs;
  cs.Format(_T("delay time = %d"), temp);
  ::AfxMessageBox(cs, MB_YESNO, 0);
注:用VC调用时,有时是0ms,有时是15ms;但用EVC调用的时候,一直都在180ms左右.
可能跟硬件有关系,因为VC调用是在PC机上调用的,EVC是在2440上调用的,但感觉180ms未免也太久了吧,请问是不是上面的代码有问题啊,有其它的办法来显示大位图图片吗?用directDraw可以吗,有范例吗?麻烦大家了!

回复评论 (3)

硬件我想是主要的关系吧。你想想,如果是2G 对 200M 是十倍的关系啊。对于目前的CPU而言,ARM对显示的效果处理不好,不如X86平台的。
还有就是显卡关系,特别200M的ARM CPU还要处理图像,所以变得很慢。
点赞  2008-2-18 08:28
同意楼上的,应该是硬件性能问题造成的。
点赞  2008-2-18 08:46
恩,这个我也想过了,可是显示一副图片要180ms会不会不正常啊,不知道GPS导航是怎么做的还可以在ARM上做大数据加载和图片缩放等功能?
点赞  2008-2-18 22:24
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复