如何從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. 用於從顏色名稱獲取顏色的Java庫
- 5. 從自舉顏色選擇器獲取顏色名稱
- 6. 獲取JColorChooser的顏色名稱
- 7. 顯示顏色名稱的顏色拾取器
- 8. 從名稱的C#顏色值
- 9. 如何從C#精簡框架中的顏色名稱獲取顏色?
- 10. 從十六進制顏色代碼中找到顏色名稱
- 11. ImageJ顏色名稱列表
- 12. CSS - 更改顏色名稱
- 13. 顏色代碼名稱
- 14. 顏色型號名稱
- 15. 不同的顏色名稱
- 16. 本地化顏色名稱
- 17. 驗證CSS顏色名稱
- 18. 從excel中提取名稱
- 19. 從html中提取名稱
- 20. 從填充屬性獲取硒中的顏色名稱
- 21. 從java中的十六進制代碼獲取顏色名稱
- 22. 從RGB代碼中獲取顏色名稱?
- 23. 從圖像中獲取使用的顏色名稱
- 24. 從任何RGB組合(包含腳本)獲取顏色名稱
- 25. 顏色名稱轉換串色「ID」
- 26. 提取名稱
- 27. 從TextView Android中提取多種顏色
- 28. 從圖像中提取顏色
- 29. 從ggplot2中提取顏色信息?
- 30. 查找顏色接近colorBrewer調色板的顏色名稱
[This](http://codegolf.stackexchange.com/questions/32386/what-colour-is-this)可能是有趣的。 – qqbenq