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

颜色值格式

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.28/5 (10投票s)

2005年10月30日

CPOL

1分钟阅读

viewsIcon

46187

downloadIcon

717

此应用程序将以三种格式显示当前选择的颜色:RGB、十六进制和整数。

Sample Image - Color_Value_Formats.jpg

引言

此应用程序将以三种格式显示当前选择的颜色的格式:RGB、十六进制和整数。您可以更改任何格式的值,其他值将相应地进行调整。

System.Drawing.Color

此命名空间提供了最常用应用程序中使用的所有颜色;如果您想创建自己的颜色,则此命名空间提供了以下函数:

  • Color.FromArgb:从四个 8 位 ARGB 组件(alpha、red、green 和 blue)值创建一个 Color 结构。

十六进制转换

可以使用 Color.FromArgb(int argb) 函数获得 RGB 颜色的整数值。以下代码会将十进制表示转换为十六进制表示。

private string DeciamlToHexadeciaml(int number)
{
    string[] hexvalues={"0","1","2","3","4","5","6","7",
                        "8","9","A","B","C","D","E","F"};
    string result=null, final=null;
    int rem=0,div=0;        

    while(true)
    {
        rem=(number%16);                                
        result+=hexvalues[rem].ToString();                

        if (number<16)
            break;

        number=(number/16);
    }                
    
    for (int i=(result.Length-1); i>=0; i--)
    {
        final+=result[i];
    }

    return final;
}

当前颜色

“当前颜色”框将以不同格式显示当前选择的颜色。当前颜色借助 PictureBox 显示。

this.pictureBox1.BackColor=Color.FromArgb(Convert.ToInt32(this.RedValue.Text), 
  Convert.ToInt32(this.GreenValue.Text),Convert.ToInt32(this.BlueValue.Text));

十进制转换

当 RGB 颜色的整数值发生更改时,此整数值将转换为相应的十六进制值。

private int GetNumberFromNotation(char c)
{
    if (c=='A')
        return 10;
    else if (c=='B')
        return 11;
    else if (c=='C')
        return 12;
    else if (c=='D')
        return 13;
    else if (c=='E')
        return 14;
    else if (c=='F')
        return 15;

    return Convert.ToInt32(c.ToString());
}

private int HexadecimaltoDecimal(string hexadecimal)
{
    int result=0;

    for (int i=0; i<hexadecimal.Length; i++)
    {
        result+=Convert.ToInt32(this.GetNumberFromNotation(hexadecimal[i])*
                    Math.Pow(16,Convert.ToInt32(hexadecimal.Length)-(i+1)));
    }
    
    return Convert.ToInt32(result);
}

动机

制作这个程序的想法源于我在不同的图形工具上工作时感到沮丧,那里存在的问题是有些支持 RDB 颜色格式,有些支持十六进制格式,还有其他的……

所以,与其一遍又一遍地自己计算它们,我现在有了这个不错的程序在我的桌面上 :).

© . All rights reserved.