📄 colorbox.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 + -