取色器小工具,拖动对屏幕进行取色,可以取16进制、10进制、RGB三个类别的颜色,可以将取色小工具置于顶层,支持取色部位放大镜展示,关键代码如下所示: #region 功能:鼠标取色 /// <summary> /// 功能:鼠标按下事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void pictureBox_get_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { //鼠标样式 Cursor = Cursors.Hand; pictureBox_get.Image = TakeColor.Properties.Resources.getcolor_2; timer_magnifying.Enabled = cb_magnifying.Checked; } p1 = e.Location; } /// <summary> /// 功能:鼠标松开事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void pictureBox_get_MouseUp(object sender, MouseEventArgs e) { p2 = e.Location; if (e.Button == MouseButtons.Left) { 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 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);//设置颜色框 //鼠标样式 Cursor = Cursors.Default; pictureBox_get.Image = TakeColor.Properties.Resources.getcolor_1; timer_magnifying.Enabled = false; } p1 = new Point(0, 0); p2 = new Point(0, 0); } #endregion
取色器小工具下载路径:TakeColor
文章评论