C# 获取鼠标在屏幕中的颜色和位置

来源:互联网 发布:博图软件使用 编辑:程序博客网 时间:2024/06/05 01:19

1.问题思路      

       想做一个能够获取鼠标的屏幕坐标的程序,最初使用Form的MouseMove事件响应函数,接着问题出现了。由于Form的所有鼠标事件响应函数要求鼠标必须在Form窗体内操作才能触发,而我的要求是鼠标在屏幕上任何位置移动都能显示鼠标的坐标。因此只能另外想别的办法了。
       最后借助Timer(计时器)可以很好地解决问题。使用MousePosition获取屏幕坐标,并借助Timer来动态更新显示鼠标坐标。鼠标所在位置的屏幕颜色则通过win32函数来实现。

2.程序演示:


3.CSharp代码:

    public Form1()        {            InitializeComponent();        }        [DllImport("user32.dll")]//取设备场景         private static extern IntPtr GetDC(IntPtr hwnd);//返回设备场景句柄         [DllImport("gdi32.dll")]//取指定点颜色         private static extern int GetPixel(IntPtr hdc, Point p);        private void Form1_Load(object sender, EventArgs e)        {            Timer tim = new Timer();            tim.Interval = 1;            tim.Tick += tim_Tick;            tim.Start();        }        private void tim_Tick(object sender, EventArgs e)        {            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);            this.Text = "(" + p.X + "," + p.Y + ")";        }    }


0 0
原创粉丝点击