OnPaint函数中bitblt速度慢的问题~
在2440上面用VC来做摄像头显示,发现bitblt来画图,速度好慢,不知道有没有解决这个问题的办法?
OnPaint(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled)
{
PAINTSTRUCT ps;
HDC hdc,hdcMem;
HDC hdcBmp;
HDC hdcBmpShizi;
HBITMAP hBmpBuffer;
hdc = BeginPaint(&ps);
hdcMem = CreateCompatibleDC(hdc);
hBmpBuffer = CreateCompatibleBitmap(hdc, m_dimScreen.x, m_dimScreen.y);
SelectObject(hdcMem, hBmpBuffer);
//画背景 这部分要50ms
hdcBmp = CreateCompatibleDC(hdc);
SelectObject(hdcBmp, m_hBmpBack);
BitBlt(hdcMem, 0, 0, m_dimScreen.x, m_dimScreen.y, hdcBmp, 0, 0, SRCCOPY);
DeleteDC(hdcBmp);
//画背景结束
//视频源 这部分要20ms
Test(hdcMem);
//视频源 结束
//视频源上面叠加一些图像,这部分要50ms
hdcBmpShizi = CreateCompatibleDC(hdcMem);
SelectObject(hdcBmpShizi, m_hBmpShizi);
TransparentBlt(hdcMem, 0, 0, 230, 230, hdcBmpShizi, 0, 0, 230, 230, RGB(0xff,0xff,0xff));
DeleteDC(hdcBmpShizi);
//双缓冲,贴到设备hdc,这部分要60ms
BitBlt(hdc, 0, 0, m_dimScreen.x, m_dimScreen.y, hdcMem, 0, 0, SRCCOPY);
DeleteDC(hdcMem);
DeleteObject(hBmpBuffer);
EndPaint(&ps);
return 0;
}
视频显示要求1s内显示15图片,现在的这个速度也忒慢了。