我知道如何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. 将字符串转换为颜色
- 3. 将对象[,]转换为字符串
- 4. 将python'type'对象转换为字符串
- 5. 将字符串转换为JS对象
- 6. 将字符串转换为JavaScript对象
- 7. Jquery将字符串转换为对象
- 8. VBScript将对象转换为字符串?
- 9. 将对象转换为字符串(java)
- 10. 将对象[,]转换为字符串[,]
- 11. 将字符串转换为NSDate对象
- 12. 将字符串转换为对象
- 13. 将对象转换为XML字符串
- 14. 将字符串转换为JSON对象
- 15. 将字符串转换为对象
- 16. 将字符串对象转换为istringstream
- 17. 将JSON对象转换为字符串
- 18. 将对象转换为字符串
- 19. 将类对象转换为字符串
- 20. 将对象转换为字符串
- 21. 将XML对象转换为字符串
- 22. 将字符串转换为DateTime对象
- 23. 转换“字符串对象”为对象
- 24. 将.net字符串对象转换为base64编码字符串
- 25. 在对象中将空字符串转换为空字符串
- 26. 将字符串ID强制转换为字符串对象
- 27. .NET - 将颜色名称字符串转换为System.Drawing.Color
- 28. 如何将UIColor值转换为指定的颜色字符串?
- 29. 将运行时的android颜色字符串转换为int
- 30. swift 3将字符串颜色转换为cgcolor
再次感谢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