⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 colorbox.cs

📁 用C#写的USB数据采集程序
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;

namespace Custom
{
    /// <summary>
    /// 颜色选择
    /// </summary>
    public sealed partial class ColorBox : UserControl
    {
        #region "构造函数"
        public ColorBox()
        {
            InitializeComponent();
            selectedcolor.BackColor = Color.FromArgb(trackBarRed.Value, trackBarGreen.Value, trackBarBlue.Value);
            setcolor = false;
        }
        #endregion

        #region "事件"

        /// <summary>
        /// 完成颜色设置事件
        /// </summary>
        private event EventHandler _colorchanged;

        /// <summary>
        /// 增加或删除完成颜色设置事件
        /// </summary>
        public event EventHandler ColorChanged
        {
            add
            {
                _colorchanged += value;
            }
            remove
            {
                _colorchanged -= value;
            }
        }

        #endregion

        #region "属性"

        private bool setcolor;

        #region "公共属性"

        #region "红色分量"
        /// <summary>
        /// 获取或设置红色分量
        /// </summary>
        public int Red
        {
            set
            {
                setcolor = true;
                trackBarRed.Value = value % 256;
                selectedcolor.BackColor = Color.FromArgb(trackBarRed.Value, trackBarGreen.Value, trackBarBlue.Value);
                setcolor = false;
            }
            get
            {
                return trackBarRed.Value;
            }
        }
        #endregion

        #region "绿色分量"
        /// <summary>
        /// 获取或设置绿色分量
        /// </summary>
        public int Green
        {
            set
            {
                setcolor = true;
                trackBarGreen.Value = value % 256;
                selectedcolor.BackColor = Color.FromArgb(trackBarRed.Value, trackBarGreen.Value, trackBarBlue.Value);
                setcolor = false;
            }
            get
            {
                return trackBarGreen.Value;
            }
        }
        #endregion

        #region "蓝色分量"
        /// <summary>
        /// 获取或设置蓝色分量
        /// </summary>
        public int Blue
        {
            set
            {
                setcolor = true;
                trackBarBlue.Value = value % 256;
                selectedcolor.BackColor = Color.FromArgb(trackBarRed.Value, trackBarGreen.Value, trackBarBlue.Value);
                setcolor = false;
            }
            get
            {
                return trackBarBlue.Value;
            }
        }
        #endregion

        #region "颜色值"
        /// <summary>
        /// 获取颜色值
        /// </summary>
        public Color ColorValue
        {
            get
            {
                return selectedcolor.BackColor;
            }
        }
        #endregion

        #endregion

        #endregion

        #region "方法"

        #region "受保护的方法"

        #region "设置颜色"

        /// <summary>
        /// 红色分量改变
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void trackBarRed_ValueChanged(object sender, EventArgs e)
        {
            if (setcolor)
            {
                return;
            }
            selectedcolor.BackColor = Color.FromArgb(trackBarRed.Value, trackBarGreen.Value, trackBarBlue.Value);
            if (_colorchanged != null)
            {
                _colorchanged(this, e);
            }
        }

        /// <summary>
        /// 绿色分量改变
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void trackBarGreen_ValueChanged(object sender, EventArgs e)
        {
            if (setcolor)
            {
                return;
            }
            selectedcolor.BackColor = Color.FromArgb(trackBarRed.Value, trackBarGreen.Value, trackBarBlue.Value);
            if (_colorchanged != null)
            {
                _colorchanged(this, e);
            }
        }

        /// <summary>
        /// 蓝色分量改变
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void trackBarBlue_ValueChanged(object sender, EventArgs e)
        {
            if (setcolor)
            {
                return;
            }
            selectedcolor.BackColor = Color.FromArgb(trackBarRed.Value, trackBarGreen.Value, trackBarBlue.Value);
            if (_colorchanged != null)
            {
                _colorchanged(this, e);
            }
        }

        #endregion

        #region "选择颜色"
        /// <summary>
        /// 选择颜色
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void pBcolor_MouseDown(object sender, MouseEventArgs e)
        {
            Bitmap bmp = (Bitmap)pBcolor.Image;
            double dx = (double)bmp.Width / pBcolor.Width;
            double dy = (double)bmp.Height / pBcolor.Height;
            Color c = bmp.GetPixel((int)(dx * e.X), (int)(dy * e.Y));
            if (c != bmp.GetPixel(1, 1))
            {
                trackBarBlue.Value = c.B;
                trackBarGreen.Value = c.G;
                trackBarRed.Value = c.R;
                if (_colorchanged != null)
                {
                    _colorchanged(this, e);
                }
            }
        }
        #endregion

        #endregion

        #endregion
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -