屏幕取色API的调用

来源:互联网 发布:设计网页的软件 编辑:程序博客网 时间:2024/06/06 19:01
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);//设置颜色框        }    }}
原创粉丝点击