在Bootcamp Windows 8.1上读取像素颜色

时间:2014-05-08 12:46:01

标签: c# winforms windows-8.1 bootcamp

我有2013年末的13“macbook pro,我通过bootcamp获得Windows 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。

看起来我所有的驱动程序都是最新的。

此应用程序在普通台式机或笔记本电脑上运行完美,我已经测试过了。

任何想法可能是它以如此奇怪的方式表现的原因?

0 个答案:

没有答案