我有一台 2013 年末的 13" macbook pro,我通过训练营安装了 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。
看起来我的所有驱动程序都是最新的。
此应用程序也可以在普通台式机或笔记本电脑上完美运行,我已经对其进行了测试。
知道它以如此奇怪的方式表现的原因是什么?