日期:2014-05-18  浏览次数:20948 次

这么难么?关于C#窗体问题。
通过什么C#方法能够获取一个窗体上某个坐标点的颜色?

------解决方案--------------------
vb中可以用api函数
Private Declare Function GetPixel Lib "gdi32 " Alias "GetPixel " (ByVal hdc As Integer, ByVal x As Integer, ByVal y As Integer) As Integer

可参考 http://www.xker.com/page/e2007/0116/13071.html
------解决方案--------------------
参考下面的代码(获取当前窗体的指定点颜色值,若知道要获取的窗口的句柄,替换一下就可以了)
[DllImport( "User32.dll ")]
public extern static System.IntPtr GetDC(System.IntPtr hWnd);

[DllImport( "GDI32 ", CharSet = CharSet.Auto)]
public static extern int GetPixel(IntPtr hWnd, int x, int y);


private void button1_Click(object sender, EventArgs e)
{
IntPtr hwnd = GetDC(this.Handle);//对本窗体获取
if (hwnd != IntPtr.Zero)
{
int v = GetPixel(hwnd, 10, 10);获取10,10坐标点的颜色值
Color color = Color.FromArgb(v);
Console.WriteLine(color);
}
}