实例介绍
【实例简介】
【实例截图】
【核心代码】
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using MyHelper.Common;
namespace MyHelper.GetColor
{
public partial class GetColorForm : Form
{
public GetColorForm()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e) //显示16进制代码颜色
{
Color c = this.colorHx16toRGB(this.textBox_16进制.Text);
this.label_颜色显示.BackColor = c;
this.textBox_R.Text = c.R.ToString();
this.textBox_G.Text = c.G.ToString();
this.textBox_B.Text = c.B.ToString();
HSLColor hsl = new HSLColor(c);
this.textBox_H.Text = hsl.Hue "";
this.textBox_S.Text = ((int)(hsl.Saturation * 100)) "";
this.textBox_L.Text = ((int)(hsl.Lightness * 100)) "";
}
private void button2_Click(object sender, EventArgs e) //显示RGB值颜色
{
Color c=Color.FromArgb(Int32.Parse(this.textBox_R.Text), Int32.Parse(this.textBox_G.Text), Int32.Parse(this.textBox_B.Text));
this.label_颜色显示.BackColor = c;
this.textBox_16进制.Text = ColorTranslator.ToHtml(c);
HSLColor hsl = new HSLColor(c);
this.textBox_H.Text = hsl.Hue "";
this.textBox_S.Text = ((int)(hsl.Saturation * 100)) "";
this.textBox_L.Text = ((int)(hsl.Lightness * 100)) "";
}
private void button3_Click(object sender, EventArgs e) //选择颜色
{
this.colorDialog1.AllowFullOpen = true;
colorDialog1.AnyColor = true;
colorDialog1.FullOpen = true;
colorDialog1.SolidColorOnly = false;
if (colorDialog1.ShowDialog() == DialogResult.OK)
{
this.textBox_16进制.ForeColor = this.colorDialog1.Color;
this.label_颜色显示.BackColor = this.colorDialog1.Color;
// String str1 = this.colorDialog1.Color.Name.ToString();
// this.textBox1.Text = "#" str1.Substring(2);
this.textBox_16进制.Text= ColorTranslator.ToHtml(this.colorDialog1.Color);
this.textBox_R.Text = this.colorDialog1.Color.R.ToString();
this.textBox_G.Text = this.colorDialog1.Color.G.ToString();
this.textBox_B.Text = this.colorDialog1.Color.B.ToString();
}
}
private void button_开始_Click(object sender, EventArgs e) //开始获取
{
HotKey.RegisterHotKey(this.Handle, 12455, true, true, false, false, Keys.P);
this.TopMost = true;
this.timer1.Start();
this.button_开始.Enabled = false;
this.button_停止.Enabled = true;
}
private void button_停止_Click(object sender, EventArgs e)
{
HotKey.UnregisterHotKey(this.Handle,12455);
this.timer1.Stop();
this.TopMost = false;
this.button_停止.Enabled = false;
this.button_开始.Enabled = true;
}
private void Form2_Load(object sender, EventArgs e)
{
this.button_停止.Enabled = false;
}
private void timer1_Tick(object sender, EventArgs e)
{
// this.textBox5.Text = "X:" System.Windows.Forms.Control.MousePosition.X.ToString() " Y:"
// System.Windows.Forms.Control.MousePosition.Y.ToString();
Color sc = this.GetColorOfScreen(System.Windows.Forms.Control.MousePosition.X, System.Windows.Forms.Control.MousePosition.Y);
this.label_颜色显示.BackColor = sc;
this.textBox_R.Text = sc.R.ToString();
this.textBox_G.Text = sc.G.ToString();
this.textBox_B.Text = sc.B.ToString();
this.textBox_16进制.Text = ColorTranslator.ToHtml(sc);
this.textBox_16进制.ForeColor = sc;
HSLColor hsl = new HSLColor(sc);
this.textBox_H.Text = hsl.Hue "";
this.textBox_S.Text = ((int)(hsl.Saturation * 100)) "";
this.textBox_L.Text = ((int)(hsl.Lightness * 100)) "";
}
[DllImport("gdi32.dll")]
static public extern uint GetPixel(IntPtr hDC, int XPos, int YPos);
[DllImport("gdi32.dll")]
static public extern IntPtr CreateDC(string driverName, string deviceName, string output, IntPtr lpinitData);
[DllImport("gdi32.dll")]
static public extern bool DeleteDC(IntPtr DC);
static public byte GetRValue(uint color)
{
return (byte)color;
}
static public byte GetGValue(uint color)
{
return ((byte)(((short)(color)) >> 8));
}
static public byte GetBValue(uint color)
{
return ((byte)((color) >> 16));
}
static public byte GetAValue(uint color)
{
return ((byte)((color) >> 24));
}
public Color GetColorOfScreen(int x, int y)
{
IntPtr displayDC = CreateDC("DISPLAY", null, null, IntPtr.Zero);
uint colorref = GetPixel(displayDC, x, y);
DeleteDC(displayDC);
byte Red = GetRValue(colorref);
byte Green = GetGValue(colorref);
byte Blue = GetBValue(colorref);
return Color.FromArgb(Red, Green, Blue);
}
public System.Drawing.Color colorHx16toRGB(string strHxColor)
{
try
{
if (strHxColor.Length == 0)
{//如果为空
return System.Drawing.Color.FromArgb(0, 0, 0);//设为黑色
}
else
{//转换颜色
return System.Drawing.Color.FromArgb(System.Int32.Parse(strHxColor.Substring(1, 2), System.Globalization.NumberStyles.AllowHexSpecifier), System.Int32.Parse(strHxColor.Substring(3, 2), System.Globalization.NumberStyles.AllowHexSpecifier), System.Int32.Parse(strHxColor.Substring(5, 2), System.Globalization.NumberStyles.AllowHexSpecifier));
}
}
catch
{//设为黑色
return System.Drawing.Color.FromArgb(0, 0, 0);
}
}
private void button7_Click(object sender, EventArgs e) //根据HSL显示
{
HSLColor hsl = new HSLColor(Convert.ToInt32(this.textBox_H.Text), Convert.ToDouble(this.textBox_S.Text) / 100, Convert.ToDouble(this.textBox_L.Text) / 100);
Color c=hsl.Color;
this.label_颜色显示.BackColor = c;
this.textBox_R.Text = c.R "";
this.textBox_G.Text = c.G "";
this.textBox_B.Text = c.B "";
this.textBox_16进制.Text = ColorTranslator.ToHtml(c);
}
protected override void WndProc(ref Message SystemMessage)
{//实现在系统关闭前给予用户提示
switch (SystemMessage.Msg)
{
case 0x0312:
{
switch (SystemMessage.WParam.ToInt32())
{
case 12455:
{
button_停止_Click(null,null);
}
break;
default:
break;
}
}
break;
default:
base.WndProc(ref SystemMessage);
break;
}
}
}
}
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论