C#获取屏幕鼠标坐标点颜色

[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 ;
 
}
posted @ 2019-10-18 07:40  左正  阅读(1000)  评论(0编辑  收藏  举报