【C#】[取色]取屏幕指定点颜色(Api)
效果图:
这是核心代码:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; namespace 取指定点颜色 { public partial class Form1 : Form { 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 timer1_Tick(object sender, EventArgs e) { Point p = new Point(MousePosition.X, MousePosition.Y);//取置顶点坐标 textBox_p.Text = p.X + "," + p.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 textBox_10jz.Text = c.ToString();//输出10进制颜色 textBox_16jz.Text = r.ToString("x").PadLeft(2, '0') + g.ToString("x").PadLeft(2, '0') + b.ToString("x").PadLeft(2, '0');//输出16进制颜色 textBox_RGB.Text = r.ToString() + ',' + g.ToString() + ',' + b.ToString();//输出RGB pictureBox_color.BackColor = Color.FromArgb(r,g,b);//设置颜色框 } } }
源码下载: