var color = System.Drawing.Color.Blue;
var known = color.ToKnownColor();
string name = known != null ? known.ToString() : "";
您需要做的是与之前问题相反:
例如:
// 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() : "";
string colorName = System.ComponentModel.TypeDescriptor.GetConverter(typeof(Microsoft.Xna.Framework.Graphics.Color)).ConvertToString(yourXnaColor);
[编辑]
由于以上方法都不能满足你的需求,你需要尝试类似Jon在这里所做的方法:将字符串转换为C#中的颜色
你需要使用反射将所有的XNA颜色存入字典中,就像他所做的那样,但需要将键和值反转,使其成为Dictionary,然后编写一个函数访问该字典,传入Color参数并返回名称。
你需要先将 Microsoft.Xna.Framework.Graphics.Color 转换为 System.Drawing.Color。
var color = System.Drawing.Color.FromArgb(a,r,g,b);
然后您可以使用Name属性获取其名称(如果有的话)。