我知道如何convert a string to an XNA Color
object,但如何将像Color
这样的C#Color.Blue
对象转换为字符串表示形式(例如“蓝色”)。
答案 0 :(得分:3)
var color = System.Drawing.Color.Blue;
var known = color.ToKnownColor();
string name = known != null ? known.ToString() : "";
答案 1 :(得分:3)
您需要执行与上一个问题相反的操作:
e.g。
// 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 Color类型是否存在,但它值得一试:
string colorName = System.ComponentModel.TypeDescriptor.GetConverter(typeof(Microsoft.Xna.Framework.Graphics.Color)).ConvertToString(yourXnaColor);
<强> [编辑] 强>
由于以上都不会做你想做的事情,你必须尝试类似于Jon在这里所做的事情:Convert string to Color in C#
您需要使用反射将所有XNA颜色拉入字典,就像他已经完成的那样,但是反转键和值,所以它是Dictionary,然后编写一个函数来访问字典,获取Color参数并返回名。
答案 2 :(得分:1)
您需要先将Microsoft.Xna.Framework.Graphics.Color转换为System.Drawing.Color。
var color = System.Drawing.Color.FromArgb(a,r,g,b);
然后你得到它的名字(如果有的话)和Name属性。