C#获取屏幕鼠标所指点的颜色

Posted 落枫飘飘

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#获取屏幕鼠标所指点的颜色相关的知识,希望对你有一定的参考价值。

有时候要获取屏幕某一点的坐标颜色值,可以如下实现:

 

在VS2012中创建一个C#的Windows窗口应用程序,然后在Form上添加PictureBox和Button两个控件,并加入以下代码。

        //需要这个命名空间:
        //using System.Runtime.InteropServices;

        [DllImport("user32.dll")]//取设备场景 
        private static extern IntPtr GetDC(IntPtr hwnd);//返回设备场景句柄 
        [DllImport("gdi32.dll")]//取指定点颜色 
        private static extern int GetPixel(IntPtr hdc, Point p);

        private void button1_Click(object sender, EventArgs e)
        {
            Timer tim = new Timer();
            tim.Interval = 1;
            tim.Tick += delegate
            {
                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);
            };
            tim.Start();
        }
 

运行后点击Button移动鼠标就能获得屏幕点的坐标了。

以上是关于C#获取屏幕鼠标所指点的颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Qt 中获取鼠标在屏幕上的位置?

请问如何用vbs实现获取屏幕某坐标颜色值!

C# 挂钩以获取原始鼠标/键事件

C# winform鼠标移动到窗口给窗口加边框并获得句柄

delphi如何获取鼠标当前位置颜色

Unity实现鼠标拾取电脑屏幕指定区域像素点颜色