您的位置:首页 > 编程语言 > C#

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

2014-10-22 10:35 2106 查看

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 + ")";
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  鼠标 c# 坐标 屏幕