Helenr
这里的大多数答案都使用该像素的相同来源(桌面直流)。关键功能是GetPixel。[DllImport("user32.dll", SetLastError = true)]public static extern IntPtr GetDesktopWindow();[DllImport("user32.dll", SetLastError = true)]public static extern IntPtr GetWindowDC(IntPtr window);[DllImport("gdi32.dll", SetLastError = true)]public static extern uint GetPixel(IntPtr dc, int x, int y);[DllImport("user32.dll", SetLastError = true)]public static extern int ReleaseDC(IntPtr window, IntPtr dc);public static Color GetColorAt(int x, int y){ IntPtr desk = GetDesktopWindow(); IntPtr dc = GetWindowDC(desk); int a = (int) GetPixel(dc, x, y); ReleaseDC(desk, dc); return Color.FromArgb(255, (a >> 0) & 0xff, (a >> 8) & 0xff, (a >> 16) & 0xff);}我认为这是最干净,最快捷的方式。注意:如果您在Windows上的“显示设置”中修改了默认文本大小以提高高分辨率显示屏的可读性,则需要以相同的方式调整GetPixel()的坐标参数。例如,如果光标位置为(x,y),在Windows 7上具有150%的文本大小,则需要调用GetPixel(x * 1.5,y * 1.5)以获取光标下像素的颜色。