如何从System.windows.Media.Color对象中提取颜色的名称(例如“绿色”)? .tostring方法给了我十六进制格式#ff008000。从System.Windows.Media.Color提取颜色名称
回答
你可以使用反射来获取颜色名称:
static string GetColorName(Color col)
{
PropertyInfo colorProperty = typeof(Colors).GetProperties()
.FirstOrDefault(p => Color.AreClose((Color)p.GetValue(null), col));
return colorProperty != null ? colorProperty.Name : "unnamed color";
}
下面的代码演示了如何使用GetColorName()
:
Color col = new Color { R = 255, G = 255, B = 0, A = 255 };
MessageBox.Show(GetColorName(col)); // displays "Yellow"
请注意,上述GetColorName()
方法不是非常快,因为它使用反射。如果您打算拨打GetColorName()
,您可能应该在字典中缓存颜色表。
谢谢!它解决了!我会在明天发布你的答案翻译成VB! –
在WPF中,十六进制代码就像它是rgba一样。
#ff008000
将
rgba(255, 0, 80, 0); // last 2 00s are for alpha filter.
如果是这样的结果。您应该使用switch语句将其转换为某个String值。此外,.ToString()
方法不会生成像Green
这样的人类可读字符串结果。它只是将结果转换为字符串,而将值传递给需要String参数的方法和函数。
下面的代码会做的伎俩为您提供:
var converter = new System.Windows.Media.BrushConverter();
var brush = (Brush) converter.ConvertFromString("#ff008000");
现在使用brush
。
谢谢!因为我“说”VB我不得不将C#翻译成VB,而且它运行良好: –
呵呵,呵呵我从来不知道你在用VB。抱歉! –
我的Visual Basic的翻译是这样的:
Function GetColorName(ByVal col As System.Windows.Media.Color) As String
Dim coltype As System.Type = GetType(System.Windows.Media.Colors)
Dim colproplist() As PropertyInfo = coltype.GetProperties
Try
Dim colorproperty As PropertyInfo = colproplist.FirstOrDefault(Function(p As PropertyInfo) Color.AreClose(p.GetValue(col, Nothing), col))
Return colorproperty.Name
Catch ex As Exception
Return ("unnamed color")
End Try
End Function
我不得不搭上nullreference例外,一位不愿透露姓名的颜色在执行此功能时。为什么,我不知道。
- 1. 本地化System.Windows.Media.Color名称
- 2. 从HSL获取颜色名称
- 3. 颜色和颜色名称
- 4. 从自举颜色选择器获取颜色名称
- 5. 用于从颜色名称获取颜色的Java库
- 6. 获取JColorChooser的颜色名称
- 7. 显示颜色名称的颜色拾取器
- 8. 从名称的C#颜色值
- 9. 如何从C#精简框架中的颜色名称获取颜色?
- 10. 从十六进制颜色代码中找到颜色名称
- 11. 不同的颜色名称
- 12. 验证CSS颜色名称
- 13. ImageJ颜色名称列表
- 14. 本地化颜色名称
- 15. 颜色代码名称
- 16. 颜色型号名称
- 17. CSS - 更改颜色名称
- 18. 从excel中提取名称
- 19. 从html中提取名称
- 20. 从RGB代码中获取颜色名称?
- 21. 从任何RGB组合(包含脚本)获取颜色名称
- 22. 从填充属性获取硒中的颜色名称
- 23. 从图像中获取使用的颜色名称
- 24. 从java中的十六进制代码获取颜色名称
- 25. 颜色名称转换串色“ID”
- 26. 提取名称
- 27. 从图像中提取颜色
- 28. 从TextView Android中提取多种颜色
- 29. 从ggplot2中提取颜色信息?
- 30. 查找颜色接近colorBrewer调色板的颜色名称
[This](http://codegolf.stackexchange.com/questions/32386/what-colour-is-this)可能是有趣的。 – qqbenq