将十六进制代码转换为颜色名称

Eni*_*ate 12 c# colors winforms

如何将其转换hexa code = #2088C1 为颜色名称像蓝色或红色

我的目标是为了给定的六进制代码,我想获得类似"蓝色"的颜色名称

我尝试了以下代码,但它没有给出任何颜色名称..

System.Drawing.Color col = System.Drawing.ColorTranslator.FromHtml("#2088C1");

Color col = ColorConverter.ConvertFromString("#2088C1") as Color;
Run Code Online (Sandbox Code Playgroud)

但它没有给出这样的颜色名称"aquablue"

我正在使用带有c#的winforms应用程序

PVi*_*itt 9

我偶然发现了一个完全符合您要求的德国网站:

/// <summary>
/// Gets the System.Drawing.Color object from hex string.
/// </summary>
/// <param name="hexString">The hex string.</param>
/// <returns></returns>
private System.Drawing.Color GetSystemDrawingColorFromHexString(string hexString)
{
    if (!System.Text.RegularExpressions.Regex.IsMatch(hexString, @"[#]([0-9]|[a-f]|[A-F]){6}\b"))
        throw new ArgumentException();
    int red = int.Parse(hexString.Substring(1, 2), NumberStyles.HexNumber);
    int green = int.Parse(hexString.Substring(3, 2), NumberStyles.HexNumber);
    int blue = int.Parse(hexString.Substring(5, 2), NumberStyles.HexNumber);
    return Color.FromArgb(red, green, blue);
}
Run Code Online (Sandbox Code Playgroud)

要获取颜色名称,您可以按如下方式使用它来获取KnownColor:

private KnownColor GetColor(string colorCode)
{
    Color color = GetSystemDrawingColorFromHexString(colorCode);
    return color.GetKnownColor();
}
Run Code Online (Sandbox Code Playgroud)

但是,System.Color.GetKnownColor似乎在较新版本的.NET中删除了


Pra*_*nth 7

使用此方法

Color myColor = ColorTranslator.FromHtml(htmlColor);
Run Code Online (Sandbox Code Playgroud)

另见链接


Kon*_*man 5

可以进行一些反思。尚未优化,但可以运行:

string GetColorName(Color color)
{
    var colorProperties = typeof(Color)
        .GetProperties(BindingFlags.Public | BindingFlags.Static)
        .Where(p => p.PropertyType == typeof(Color));
    foreach(var colorProperty in colorProperties) 
    {
        var colorPropertyValue = (Color)colorProperty.GetValue(null, null);
        if(colorPropertyValue.R == color.R 
               && colorPropertyValue.G == color.G 
               && colorPropertyValue.B == color.B) {
            return colorPropertyValue.Name;
        }
    }

    //If unknown color, fallback to the hex value
    //(or you could return null, "Unkown" or whatever you want)
    return ColorTranslator.ToHtml(color);
}
Run Code Online (Sandbox Code Playgroud)