将XNA Color对象转换为字符串

时间:2010-08-02 21:43:29

标签: c# .net xna

我知道如何convert a string to an XNA Color object,但如何将像Color这样的C#Color.Blue对象转换为字符串表示形式(例如“蓝色”)。

3 个答案:

答案 0 :(得分:3)

var color = System.Drawing.Color.Blue;
var known = color.ToKnownColor();
string name = known != null ? known.ToString() : "";

答案 1 :(得分:3)

您需要执行与上一个问题相反的操作:

  1. 从XNA颜色转换为系统颜色
  2. 尝试将系统颜色转换为已知颜色
  3. 如果转换有效,请使用已知颜色调用ToString
  4. 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属性。

相关问题