Чтение цвета пикселей на 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.

Похоже, у меня есть все драйверы в актуальном состоянии.

Также это приложение работает безупречно на обычном настольном компьютере или ноутбуке, я проверял это.

Любая идея, что может быть причиной, почему она ведет себя таким странным образом?

0 ответов

Другие вопросы по тегам