VC bitblt截屏性能问题
最近在做一个关于屏幕监控的应用,发现用bitblt截屏,1366*768大小的屏幕截屏下来要用到50ms左右。而就算是截一个1*1大小的也要22ms,请问这是怎么回事?
另外有其它较好的截屏方法么?
截屏的代码如下:
- C/C++ code
HDC hDC=::GetDC(NULL); HDC hMemDC=CreateCompatibleDC(hDC); HBITMAP hBitmap=CreateCompatibleBitmap(hDC,width,height); HBITMAP hOldBitmap; hOldBitmap=(HBITMAP)SelectObject(hMemDC,hBitmap); BitBlt(hMemDC,0,0,width,height,hDC,left,right,SRCCOPY);
[解决办法]
hook消息只能截获有限的图像更新,mirror驱动会禁用掉桌面组合
监控主要慢在网络传输上,不是截图的速度
所以应该减少传送的数据,可以用分块比较传输,xor,隔行扫描,差分,有损压缩