[DllImport( "user32.dll" )] private static extern IntPtr GetDC(IntPtr hwnd); [DllImport( "gdi32.dll" )] private static extern int GetPixel(IntPtr hdc, Point p); public static Color getColor(Point p) { // Point p = new Point(MousePosition.X, MousePosition.Y);//取置顶点坐标 IntPtr hdc = GetDC( new IntPtr(0)); //取到设备场景(0就是全屏的设备场景) int c = GetPixel(hdc, p); //取指定点颜色 int r = (c & 0xFF); //转换R int g = (c & 0xFF00) / 256; //转换G int b = (c & 0xFF0000) / 65536; //转换B // pictureBox1.BackColor = Color.FromArgb(r, g, b); return Color.FromArgb(r, g, b); } |
测试例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
private void button1_Click( object sender, EventArgs e) { //测试X在200,Y在120 到500 的颜是否不等于 Color.FromArgb(255, 246, 246, 246); string d = DateTime.Now.ToLongTimeString(); Color cl = Color.FromArgb(255, 246, 246, 246); Point p = new Point(200,0); for ( int h = 120; h < 500; h+=8) { p.Y = h; if (getColor(p).Equals(cl)== false ){ Text = "" + h; break ; } } Text = d + ":" + DateTime.Now.ToLongTimeString() + " " + p ; } |