Преобразовать объект цвета XNA в строку - PullRequest
4 голосов
/ 03 августа 2010

Я знаю, как преобразовать строку в объект XNA Color , но как мне преобразовать объект C # Color, например Color.Blue, в его строковое представление (например, "Blue").

Ответы [ 3 ]

3 голосов
/ 03 августа 2010

Вы должны сделать все наоборот, что было сделано в предыдущем вопросе:

  1. Преобразовать из цвета XNA в Системный цвет
  2. Попробуйте преобразовать системный цвет в известный цвет
  3. Если преобразование сработало, вызовите 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() : "";

Примечание. Это даст вам пустую строку, если имя цвета нене известно.

[EDIT] Возможно, вы захотите попробовать здесь использование TypeConverter.Я не уверен, что существует для типа XNA Color, но стоит попробовать:

string colorName = System.ComponentModel.TypeDescriptor.GetConverter(typeof(Microsoft.Xna.Framework.Graphics.Color)).ConvertToString(yourXnaColor);

[EDIT]

, так как ничего из вышеперечисленного не являетсясобираясь делать то, что вы хотите, вам придется попробовать подход, аналогичный тому, что сделал Джон: Преобразование строки в цвет в C #

Вам нужно будет вытянуть все XNAЦвета в словарь, используя отражение, как он сделал, но перевернуть ключи и значения, так что это Словарь, а затем написать функцию, которая обращается к словарю, принимая параметр Color и возвращая имя.

3 голосов
/ 03 августа 2010
var color = System.Drawing.Color.Blue;
var known = color.ToKnownColor();
string name = known != null ? known.ToString() : "";
1 голос
/ 03 августа 2010

Сначала необходимо преобразовать Microsoft.Xna.Framework.Graphics.Color в System.Drawing.Color.

var color = System.Drawing.Color.FromArgb(a,r,g,b);

Затем вы получите его имя (если оно есть) со свойством Name.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...