0
我目前正在寻找一种方法来访问和测试从目标窗口中复制的位图的各个像素,而不使用非常慢的方法GetPixel()
。由于memDC
在调用BitBlt()
时包含位图的副本,是否有更快的方式来遍历各个像素并测试它们的值?访问像素的24位位图,而不使用GetPixel()?
HWND target = (HWND)0x0002051A; // this is just for debugging; when i get to the release version it will detect the intended window automatically
HBITMAP hBitmap;
RECT winRect;
HDC winDC, memDC;
winDC = GetDC(target);
GetClientRect(target, &winRect);
memDC = CreateCompatibleDC(winDC);
hBitmap = CreateCompatibleBitmap(winDC, winRect.right-winRect.left, winRect.bottom-winRect.top);
SelectObject(memDC, hBitmap);
BitBlt(memDC, 0, 0, winRect.right-winRect.left, winRect.bottom-winRect.top, winDC, 0, 0, SRCCOPY);
// Perform other tasks based on the color values of pixels...
ReleaseDC(memDC);
ReleaseDC(winDC);
DeleteObject(hBitmap);
非常感谢!现在使用'GetDIBits',我的算法运行得非常快,比以前快得多! – 2013-03-05 21:12:42