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应用程序
我偶然发现了一个完全符合您要求的德国网站:
/// <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中删除了
使用此方法
Color myColor = ColorTranslator.FromHtml(htmlColor);
Run Code Online (Sandbox Code Playgroud)
另见链接
可以进行一些反思。尚未优化,但可以运行:
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)