我有以下内容:
Color color = Colors.Red;
color.ToString();
以十六进制表示形式输出。有没有办法输出“红色”?
奖励指向任何提供适用于不同文化的解决方案的人(即输出西班牙语的“Rojo”)。
答案 0 :(得分:8)
看起来您可能需要使用Reflection手动滚动自己的解决方案。这是我的第一次拍摄:
public static string GetColorName(this System.Windows.Media.Color color)
{
Type colors = typeof(System.Windows.Media.Colors);
foreach(var prop in colors.GetProperties())
{
if(((System.Windows.Media.Color)prop.GetValue(null, null)) == color)
return prop.Name;
}
throw new Exception("The provided Color is not named.");
}
请记住,这绝不是有效的,但从文档中我可以看到它是唯一的方法。
答案 1 :(得分:0)
一个选项可能是将Media.Color转换为Drawing.Color
private System.Drawing.Color ColorFromMediaColor(System.Windows.Media.Color clr)
{
return System.Drawing.Color.FromArgb(clr.A, clr.R, clr.G, clr.B);
}
然后使用Drawing.Color对象的Name属性来获取颜色名称。
对于本地化,您可以在根据您提供的资源文件构建的翻译词典中查找color name。