c# - acrylic - Cómo convertir un Windows.UI.Color en un nombre de color de cadena en una aplicación universal de Windows
uwp acrylic (1)
La clase Colors contiene propiedades con nombre para muchos colores. No hay una búsqueda inversa enlatada, pero puede usar la reflexión para crear su propia asignación de color a nombre de color.
Dictionary<Color, string> ColorNames = new Dictionary<Color, string>();
foreach (var color in typeof(Colors).GetRuntimeProperties())
{
ColorNames[(Color)color.GetValue(null)] = color.Name;
}
Prueba:
Color c = Colors.AliceBlue;
Debug.WriteLine("{0} is {1}", c, ColorNames[c]);
Resultado:
#FFF0F8FF is AliceBlue
Tenga cuidado con los duplicados (por ejemplo, Colors.Aqua y Colors.Cyan ambos se asignan a # FF00FFFF). Mi ciclo preferirá el segundo.
Dependiendo de dónde se encuentren sus objetos de Color, puede desear soltar el valor hexadecimal de cadena en lugar del objeto Color en sí, y si se vuelve realmente inteligente podría hacer una coincidencia más cercana en lugar de exacta (implementación dejada como ejercicio para el lector :))
--Robar
Intento convertir Windows.UI.Color en un nombre de cadena simple en mi aplicación universal Windows 8.1.
Ya tengo los valores ARGB del Color (incluso el código hexadecimal), y solo quiero su nombre conocido asociado (por ejemplo, de # 7AFF7A7A a "salmón"). Como System.Drawing no está disponible en WinRT, no puedo usar ColorConverter o ColorTranslator.
Intenté convertir el objeto Windows.UI.Color en SolidColorBrush o incluso en Pincel, pero ninguno de ellos proporciona la capacidad de conversión de nombre.
¿Cuál es la mejor manera de hacer esto?