一、自定义颜色选择器:https://blog.csdn.net/BYH371256/article/details/83409995(下载地址:https://download.csdn.net/download/byh371256/10745273)
二、调用WINDOWS系统的颜色选择器
// AllowFullOpen 属性:指示用户是否可以使用该对话框定义自定义颜色。如果用户可定义自定义颜色,则为 true;否则为 false,将禁用对话框中关联的按钮,而且用户无法访问对话框中的自定义颜色控件。
// FullOpen 属性:指示用于创建自定义颜色的控件在对话框打开时是否可见。如果自定义颜色控件在对话框打开时是可用的,则为 true;否则为 false。默认情况下,自定义颜色控件在第一次打开对话框时是不可见的。必须单击 “规定自定义颜色” 按钮来显示它们。注意:如果 AllowFullOpen 为 false,则 FullOpen 不起作用。
// AnyColor 属性:指示对话框是否显示(基本颜色集)中可用的所有颜色,如果对话框显示基本颜色集中可用的所有颜色,则为 true;否则为 false。(默认值为 false)(显示出来好像没有差别)
// CustomColors 属性:对话框显示的自定义颜色集,默认值为空引用null。属于int[]类型,可以把颜色对应的数值放进去,从而设置为自定义颜色。面板提供16个自定义颜色,如果赋值时不够16个,则剩余部分自动补为0,即白色。我们可以使用代码来初始化“自定义颜色”列表 CustomColors,比较适用于禁止用户自行添加自定义颜色的情况。(格式:0xBGR)
// ShowHelp 属性:指示在颜色对话框中是否显示“帮助”按钮,如果在对话框中显示“帮助”按钮,则为 true;否则为 false。(默认为false)
// SolidColorOnly 属性:指示对话框是否限制用户只选择纯色。如果用户只能选择纯色,则为 true;否则为 false。(默认值为 false)
System.Windows.Forms.ColorDialog colorDialog = new System.Windows.Forms.ColorDialog();
colorDialog.AllowFullOpen = true;
colorDialog.FullOpen = true;
colorDialog.AnyColor = true;
//colorDialog.ShowHelp = true; // 显示帮助后,但点帮助按钮无反应,所以暂屏蔽此不显示帮助
//colorDialog.CustomColors = new int[] { 0x6987FC, 15195440, 16107657, 1836924, 3758726, 12566463, 7526079, 7405793, 6945974, 241502, 2296476, 5130294, 3102017, 7324121, 14993507, 11730944 }; // 0xBGR
//colorDialog.ShowDialog();
if (colorDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
//System.Drawing.SolidBrush sb = new System.Drawing.SolidBrush(colorDialog.Color);
//SolidColorBrush solidColorBrush = new SolidColorBrush(System.Windows.Media.Color.FromArgb(sb.Color.A, sb.Color.R, sb.Color.G, sb.Color.B));
//xx.Background = solidColorBrush;
System.Windows.Media.Color color = new System.Windows.Media.Color();
color.A = colorDialog.Color.A;
color.B = colorDialog.Color.B;
color.G = colorDialog.Color.G;
color.R = colorDialog.Color.R;
//System.Windows.Media.SolidColorBrush scb = new System.Windows.Media.SolidColorBrush();
//scb.Color = color;
GlobalUIConfig.ColorDescription[arg.ToString()] = color.ToString();
AppMessage am = new AppMessage();
am.MsgType = AppMsg.ColorChanged;
am.Tag = arg;
EventHub.SysEvents.PubEvent(am);
}
//////////////////////////////////////////////////////////
System.Windows.Forms.ColorDialog colorDialog = new System.Windows.Forms.ColorDialog();
if (colorDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
System.Drawing.SolidBrush sb=new System.Drawing.SolidBrush(colorDialog.Color);
SolidColorBrush solidColorBrush=new SolidColorBrush(System.Windows.Media.Color.FromArgb(sb.Color.A,sb.Color.R,sb.Color.G,sb.Color.B));
this.Background = solidColorBrush;
}