一尘不染

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

c#

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

我的目标是为给定的十六进制代码获取类似“蓝色”的颜色名称

我试过下面的代码,但没有给出任何颜色名称..

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

Color col = ColorConverter.ConvertFromString("#2088C1") as Color;

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

我正在C#中使用Winforms应用程序


阅读 267

收藏
2020-05-19

共1个答案

一尘不染

我偶然发现了一个德国网站,该网站完全可以满足您的需求:

/// <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);
}

要获得颜色名称,可以按以下方式使用它来获得KnownColor

private KnownColor GetColor(string colorCode)
{
    Color color = GetSystemDrawingColorFromHexString(colorCode);
    return color.GetKnownColor();
}

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

2020-05-19