65.9K
CodeProject 正在变化。 阅读更多。
Home

十六进制颜色混合器

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.95/5 (8投票s)

2006年1月16日

2分钟阅读

viewsIcon

52038

downloadIcon

576

本文档展示了如何创建一个控件来混合颜色,然后将其导出为 HTML 十六进制格式。

The color mixer in action in my HTML Editor program!

引言

颜色混合器控件允许用户“混合”自己的颜色。为此,为每个颜色分量(R、G 和 B)提供一个滑块。然后,它将这些转换为 HTML 应用程序中的十六进制格式,并存储单独的 RGB 字节以供以后使用。当颜色被混合时,控件的背景颜色会更改为与当前颜色匹配,以便向用户指示他们创建的颜色。

背景

最初,这作为一个对话框窗口开始,以实现相同的目的(它仍然被用于我的 HTML 编辑器程序中)。对话框窗口相同,只是它有一个单独的预览面板和文本框,用于显示 R、G、B 和 RGB 值以及十六进制字符串。我创建它是为了为我的用户提供一种在视觉环境中创建符合 HTML 标准的颜色代码的方式。为了完成这项工作,我必须创建一个函数来将 RGB 代码转换为十六进制数字系统。

使用代码

我正在根据 GNU 许可发布 ColorMixer.dll,因此人们可以在他们的应用程序中使用它,但保留版权声明并给予我应有的赞誉。但我不想让人们使用我的代码创建另一个教程。

该代码本身相当简单,它为您提供了多种使用它的方式(弹出窗口、停靠工具栏等)。我将解释我发现特别具有挑战性的代码部分,或者关于如何改进/修改此示例的提示。

关注点

控件本身编写起来很容易,但有一种方法值得特别关注,那就是 RGBtoHEX() 方法。顾名思义,它将 RGB 颜色值转换为十六进制值,以便在 HTML 代码等中使用。

public string RGBtoHEX(int Value)
{
    int Result = (Value / 16);
    int Remain = (Value % 16);

    string Resultant = null;

    if (Result >= 10)
    {
        if (Result == 10)
            Resultant = "A";
        if (Result == 11)
            Resultant = "B";
        if (Result == 12)
            Resultant = "C";
        if (Result == 13)
            Resultant = "D";
        if (Result == 14)
            Resultant = "E";
        if (Result == 15)
            Resultant = "F";
    }

    else Resultant = Result.ToString();

    if (Remain >= 10)
    {
        if (Remain == 10)
            Resultant += "A";
        if (Remain == 11)
            Resultant += "B";
        if (Remain == 12)
            Resultant += "C";
        if (Remain == 13)
            Resultant += "D";
        if (Remain == 14)
            Resultant += "E";
        if (Remain == 15)
            Resultant += "F";
    }

    else Resultant += Remain.ToString();

    return Resultant;
}

可以使用十六进制值的枚举来更改它,但当前的系统很好地满足了它的目的。

联系方式

请将所有电子邮件发送至 xpyder@magclan.cwhnetworks.com。我也有 MSN Messenger,我的电子邮件地址是 jamespraveen@aol.com

历史

  • 2006/01/12:首次将代码提交至 The Code Project。
© . All rights reserved.