Попробуйте этот метод расширения:
static class ColorHelpers
{
public static string GetColorName(this Color color)
{
return _knownColors
.Where(kvp => kvp.Value.Equals(color))
.Select(kvp => kvp.Key)
.FirstOrDefault();
}
static readonly Dictionary<string, Color> _knownColors = GetKnownColors();
static Dictionary<string, Color> GetKnownColors()
{
var colorProperties = typeof(Colors).GetProperties(BindingFlags.Static | BindingFlags.Public);
return colorProperties
.ToDictionary(
p => p.Name,
p => (Color)p.GetValue(null, null));
}
Использование:
Color c = ...;
string name = c.GetColorName();
РЕДАКТИРОВАТЬ: это примерно так же, как ответ Мелика, но это должно быть быстрее, поскольку отражение делается только один раз ...