|
我分别用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可以吗,有范例吗?麻烦大家了!
|
|