1

2013 年後半の 13 インチ MacBook Pro を使用しており、ブートキャンプ経由で Wi​​ndows 8.1 を使用しています。解像度は 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に変更してみました。

すべてのドライバーが最新のようです。

また、このアプリケーションは、通常のデスクトップまたはラップトップで問題なく動作します。テスト済みです。

このように奇妙な動作をする理由は何だと思いますか?

4

0 に答える 0