Чтение цвета пикселей на Bootcamp Windows 8.1
У меня в конце 2013 года 13"MacBook Pro, где у меня Windows 8.1 через bootcamp. Разрешение 2560×1600
Там я написал небольшое тестовое приложение, которое считывает цвет пикселей с экрана.
[DllImport("user32.dll")]
static extern IntPtr GetDC(IntPtr hwnd);
[DllImport("user32.dll")]
static extern Int32 ReleaseDC(IntPtr hwnd, IntPtr hdc);
[DllImport("gdi32.dll")]
static extern uint GetPixel(IntPtr hdc, int nXPos, int nYPos);
public Color GetPixelColor(int x, int y)
{
IntPtr hdc = GetDC(IntPtr.Zero);
uint pixel = GetPixel(hdc, x, y);
ReleaseDC(IntPtr.Zero, hdc);
Color color = Color.FromArgb((int)(pixel & 0x000000FF),
(int)(pixel & 0x0000FF00) >> 8,
(int)(pixel & 0x00FF0000) >> 16);
return color;
}
//And other methods which utilize this method.
Проблема в том, что он читает неправильные значения. Похоже, что он получает цвет с некоторым огромным смещением в проводнике Windows (например, если я пытаюсь получить пиксель из (200, 20), он, кажется, получает цвет из (800, 20)), а также считывает неправильные значения, если я есть игра на переднем плане. Из окна игры он читает серо-черные цвета только отовсюду.
Я также пытался изменить разрешение на 1920x1080.
Похоже, у меня есть все драйверы в актуальном состоянии.
Также это приложение работает безупречно на обычном настольном компьютере или ноутбуке, я проверял это.
Любая идея, что может быть причиной, почему она ведет себя таким странным образом?