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

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

2016-10-13 21:04 1346 查看
有时候要获取屏幕某一点的坐标颜色值,可以如下实现:

在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移动鼠标就能获得屏幕点的坐标了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: