我有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。
看起来我所有的驱动程序都是最新的。
此应用程序在普通台式机或笔记本电脑上运行完美,我已经测试过了。
任何想法可能是它以如此奇怪的方式表现的原因?