简介

KryptonColorDialog 是增强型颜色选择对话框,替代标准 System.Windows.Forms.ColorDialog。它自动跟随 Krypton 主题渲染,提供标准色板、自定义颜色、RGB/HSL 调节等功能,用户选择的颜色通过 Color 属性获取。常用于主题配置、绘图工具、文本编辑器等需要颜色选择的场景。

KryptonColorDialog 示例截图
KryptonColorDialog 颜色选择对话框

常用属性

属性类型说明
ColorColor用户选择的颜色(对话框关闭后读取)
FullOpenbool是否默认展开自定义颜色区域
AllowFullOpenbool是否允许用户展开自定义颜色区域
AnyColorbool是否允许选择任意颜色(含非纯色)
SolidColorOnlybool是否仅允许选择纯色
CustomColorsint[]自定义颜色数组(最多 16 个)
ShowHelpbool是否显示帮助按钮

快速上手

基本用法

using Krypton.Toolkit;

// 创建颜色对话框
var colorDialog = new KryptonColorDialog();
colorDialog.Color = btnBackground.StateCommon.Back.Color1;  // 初始颜色
colorDialog.FullOpen = true;  // 展开自定义区域

if (colorDialog.ShowDialog(this) == DialogResult.OK)
{
    // 应用用户选择的颜色
    btnBackground.StateCommon.Back.Color1 = colorDialog.Color;
    lblPreview.StateCommon.ShortText.Color1 = colorDialog.Color;
}

选择文字颜色

var colorDialog = new KryptonColorDialog();
colorDialog.AnyColor = true;
colorDialog.SolidColorOnly = true;

if (colorDialog.ShowDialog() == DialogResult.OK)
{
    richTextBox.SelectionColor = colorDialog.Color;
}

进阶用法

预设自定义颜色

// 预设 16 个自定义颜色(ARGB 整数值)
var colorDialog = new KryptonColorDialog();
colorDialog.CustomColors = new int[]
{
    ColorTranslator.ToOle(Color.FromArgb(15, 118, 110)),   // 翡翠绿
    ColorTranslator.ToOle(Color.FromArgb(13, 148, 136)),
    ColorTranslator.ToOle(Color.FromArgb(20, 184, 166)),
    ColorTranslator.ToOle(Color.FromArgb(45, 212, 191)),
    ColorTranslator.ToOle(Color.FromArgb(250, 250, 248)),  // 暖象牙
    ColorTranslator.ToOle(Color.FromArgb(245, 245, 244)),
    ColorTranslator.ToOle(Color.FromArgb(30, 41, 59)),     // 深色
    ColorTranslator.ToOle(Color.FromArgb(51, 65, 85)),
    ColorTranslator.ToOle(Color.FromArgb(239, 68, 68)),    // 红色系
    ColorTranslator.ToOle(Color.FromArgb(249, 115, 22)),   // 橙色系
    ColorTranslator.ToOle(Color.FromArgb(234, 179, 8)),    // 黄色系
    ColorTranslator.ToOle(Color.FromArgb(59, 130, 246)),   // 蓝色系
    ColorTranslator.ToOle(Color.FromArgb(139, 92, 246)),   // 紫色系
    ColorTranslator.ToOle(Color.FromArgb(236, 72, 153)),   // 粉色系
    ColorTranslator.ToOle(Color.FromArgb(107, 114, 128)),  // 灰色系
    ColorTranslator.ToOle(Color.FromArgb(255, 255, 255))   // 白色
};
colorDialog.FullOpen = true;

if (colorDialog.ShowDialog(this) == DialogResult.OK)
{
    ApplyThemeColor(colorDialog.Color);
}

配合 KryptonColorButton 使用

// 颜色按钮点击时弹出颜色对话框
var btnColor = new KryptonColorButton();
btnColor.Values.Text = "选择颜色";
btnColor.SelectedColor = Color.Teal;

btnColor.Click += (s, e) =>
{
    var dlg = new KryptonColorDialog();
    dlg.Color = btnColor.SelectedColor;
    dlg.FullOpen = true;

    if (dlg.ShowDialog(this) == DialogResult.OK)
    {
        btnColor.SelectedColor = dlg.Color;
        panelPreview.StateCommon.Back.Color1 = dlg.Color;
    }
};
提示:CustomColors 属性使用 OLE 颜色整数(通过 ColorTranslator.ToOle() 转换)。用户自定义的颜色会在下次打开对话框时自动保留在自定义区域中。

对应示例项目

📁 Source/Krypton Toolkit Examples/KryptonColorDialog Examples/

包含:基本颜色选择、自定义颜色预设、配合 ColorButton 使用演示。

相关控件