在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#语言基础 → C# 颜色查看器(抓取电脑任意文件的色值)

C# 颜色查看器(抓取电脑任意文件的色值)

C#语言基础

下载此实例
  • 开发语言:C#
  • 实例大小:0.22M
  • 下载次数:27
  • 浏览次数:362
  • 发布时间:2019-04-01
  • 实例类别:C#语言基础
  • 发 布 人:crazycode
  • 文件格式:.rar
  • 所需积分:2
 相关标签: C# 文件 抓色 颜色

实例介绍

【实例简介】

【实例截图】

from clipboard

【核心代码】

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;
            }

        }

    }
}

标签: C# 文件 抓色 颜色

实例下载地址

C# 颜色查看器(抓取电脑任意文件的色值)

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警