我遇到了Pixel的问题。
我想结合Bitmap的RGBA。我明白了。
但是,要避免一些问题。
首先,告诉你我的代码。
我的代码:
private Bitmap getImg (IntPtr hWnd, int width, int height, int startX, int startY) {
IntPtr hDC = Win32.GetDC(hWnd);
IntPtr hMemDC = Win32.CreateCompatibleDC(hDC);
IntPtr hBitmap = Win32.CreateCompatibleBitmap(hDC, width, height);
if (hBitmap != IntPtr.Zero) {
IntPtr hOld = (IntPtr) Win32.SelectObject(hMemDC, hBitmap);
Win32.BitBlt(hMemDC, 0, 0, width, height, hDC, startX, startY, 13369376);
Win32.SelectObject(hMemDC, hOld);
Win32.DeleteDC(hMemDC);
Win32.ReleaseDC(hWnd, hDC);
Bitmap bmp = System.Drawing.Image.FromHbitmap(hBitmap);
Win32.DeleteObject(hBitmap);
GC.Collect();
return bmp;
}
return null;
}
private void checkPixel (Bitmap img) {
try {
if (img != null) {
long value = 0;
for (int x = 0; x < img.Width; x++) {
for (int y = 0; y < img.Height; y++) {
Color pixel = img.GetPixel(x, y);
value += pixel.A + pixel.R + pixel.G + pixel.B;
}
}
Console.WriteLine("value : " + value);
}
} catch (Exception e) {
Console.WriteLine(e);
}
}
// And.. I used this way
Bitmap img = getImg(hWnd, width, height, startX, startY);
if (img != null) {
checkPixel(img);
}
所以......这段代码很酷我的电脑。
但是,在另一台计算机上工作,“价值”与我的“价值”不同。
BMP是一样的。 (游戏画面)
我不明白这个问题。
我该如何解决这个问题?
你有更好的主意吗?