我知道如何convert a string to an XNA Color
object,但是如何將C#Color
對象(如Color.Blue
)轉換爲其字符串表示形式(例如「藍色」)。將XNA顏色對象轉換爲字符串
回答
你需要做的是什麼在你前面的問題做了相反的:
- 轉換從XNA顏色系統顏色
- 嘗試和轉換系統顏色爲已知的顏色
- 如果轉換工作,在已知顏色上調用ToString
eg
// Borrowed from previous question
using XnaColor = Microsoft.Xna.Framework.Graphics.Color;
System.Drawing.Color clrColor = System.Drawing.Color.FromName("Red");
XnaColor xnaColor = new XnaColor(clrColor.R, clrColor.G, clrColor.B, clrColor.A);
// Working back the other way
System.Drawing.Color newClrColor = System.Drawing.Color.FromArgb(xnaColor.A, xnaColor.R, xnaColor.G, xnaColor.B);
System.Drawing.KnownColor kColor = newClrColor.ToKnownColor();
string colorName = kColor != 0 ? kColor.ToString() : "";
注意:如果顏色名稱未知,這會給你一個空字符串。
[編輯] 你可能想嘗試在這裏使用TypeConverter。我不知道,一個存在的XNA顏色類型,但它是值得一試:
string colorName = System.ComponentModel.TypeDescriptor.GetConverter(typeof(Microsoft.Xna.Framework.Graphics.Color)).ConvertToString(yourXnaColor);
[編輯]
由於沒有以上會做你想要什麼,你必須嘗試類似的方法來處理Jon在這裏所做的:Convert string to Color in C#
您需要使用反射將所有XNA顏色拖入字典中,就像他所做的那樣,但是反轉鍵和值,所以它是字典,然後編寫一個函數,該函數使用Color參數訪問字典並返回名稱。
var color = System.Drawing.Color.Blue;
var known = color.ToKnownColor();
string name = known != null ? known.ToString() : "";
他在說XNA。 – 2010-08-02 21:51:33
@Bennor:我沒有做過重大的XNA工作,但是沒有System.Drawing.Color和System.Drawing.KnownColor可用?你自己的答案假定它是。 – 2010-08-02 22:09:24
是的,他們肯定有訪問權限,但你仍然需要從XNA顏色轉換。 – 2010-08-02 22:13:12
您需要先將Microsoft.Xna.Framework.Graphics.Color轉換爲System.Drawing.Color。
var color = System.Drawing.Color.FromArgb(a,r,g,b);
然後你得到它的名字(如果它有一個)Name屬性。
謝謝,但無論是什麼顏色,仍然總是得到「0」。 – Kevin 2010-08-02 22:55:04
- 1. 如何將顏色字符串轉換爲顏色對象?
- 2. 將字符串轉換爲swt顏色
- 3. 將字符串轉換爲顏色int
- 4. 將字符串轉換爲顏色VB.NET
- 5. 將十六進制顏色字符串轉換爲RGB顏色
- 6. 轉換一個顏色對象爲字符串
- 7. 將字符串轉換爲gson對象
- 8. 將字符串對象轉換爲istringstream
- 9. 將python'type'對象轉換爲字符串
- 10. 將字符串轉換爲JSON對象
- 11. 將字符串轉換爲對象Python
- 12. 將字符串轉換爲JS對象
- 13. 將對象轉換爲字符串
- 14. 將字符串轉換爲對象
- 15. VBScript將對象轉換爲字符串?
- 16. 將對象轉換爲字符串(java)
- 17. 將XML對象轉換爲字符串
- 18. 將對象[,]轉換爲字符串
- 19. 將對象轉換爲字符串
- 20. 將字符串轉換爲DateTime對象
- 21. 將字符串轉換爲json對象
- 22. 將字符串轉換爲datetime.time對象
- 23. 將字符串轉換爲NSDate對象
- 24. Jquery將字符串轉換爲對象
- 25. 將字符串轉換爲JavaScript對象
- 26. 將JSON對象轉換爲字符串
- 27. 將字符串轉換爲對象
- 28. 將json對象轉換爲字符串
- 29. 將字符串轉換爲Moment對象
- 30. 將類對象轉換爲字符串
再次感謝Bennor! 我喜歡你的第一部分代碼,但是,它總是會返回一個0作爲結果字符串,即使我將clrColor作爲一個常量,比如Color.Green,顏色名稱仍然是「0」。不知道哪裏出了問題.. – Kevin 2010-08-02 22:44:31
好消息是你沒有做錯任何事情。壞消息是我提供的解決方案不起作用(其他人也不會發布到目前爲止)。它看起來像只有當轉換爲已知顏色(使用ToKnownColor)時纔可以轉換回來,而顏色首先是從已知顏色創建的。 – 2010-08-02 23:06:40
聽起來很難對我,大聲笑,因爲我沒有經驗的反思,但我會嘗試,謝謝,本諾爾。 – Kevin 2010-08-02 23:42:38