在Windows下对屏幕进行截屏。
原理:使用BitBlt函数进行截屏操作。
代码:
HWND hwnd = ::GetDesktopWindow();
HDC hdc = GetWindowDC(NULL);
int x = GetDeviceCaps(hdc, HORZRES);
int y = GetDeviceCaps(hdc, VERTRES);
HBITMAP hbmp = ::CreateCompatibleBitmap(hdc, x, y), hold;
HDC hmemdc = ::CreateCompatibleDC(hdc);
hold = (HBITMAP)::SelectObject(hmemdc, hbmp);
BitBlt(hmemdc, 0, 0, x, y, hdc, 0, 0, SRCCOPY);
SelectObject(hmemdc, hold);
Bitmap bit(hbmp, NULL);
分析:
通过以上代码,可以将桌面像素都捕捉到Bitmap中,之后再对该对象进行操作。目前在PC机上测试(E5400 Dual-Core 2.7GHz),捕捉一张1024*768的桌面图像,平均需要47ms,捕捉一张800*600的桌面图像,平均需要16ms。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25432352/viewspace-722029/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/25432352/viewspace-722029/