Вы должны сделать все наоборот, что было сделано в предыдущем вопросе:
- Преобразовать из цвета XNA в Системный цвет
- Попробуйте преобразовать системный цвет в известный цвет
- Если преобразование сработало, вызовите 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 и возвращая имя.