Pregunta

Estoy usando Windows Phone.El problema es que no tiene el Color.FromName, en lugar de eso, tiene el Color.FromArgb.

Tengo un rectángulo y quiero configurar su color de relleno según lo que el color es de un archivo que se está leyendo.p.ej.He guardado "rojo" en un archivo llamado colores.Leí eso y lo envié a una cadena llamada LpColor ahora que mantendrá el texto "rojo" dentro.

Ahora, ¿cómo uso LpColor en Rectangle.Fill = ...?Haciendo Rectangle.Fill= LPColor no funcionará.

Este es el código sobre cómo leí mi archivo:

IsolatedStorageFileStream readColor = store.OpenFile("/contactColor.txt", FileMode.Open, FileAccess.Read);
using (StreamReader contactColor = new StreamReader(readColor))
{
  var color = contactColor.ReadToEnd();
  LpColor = color;
}

¿Fue útil?

Solución

Si debe guardarlo como una cadena (rojo), puede escribir un método de convertidor que convertirá la cadena de nuevo a un color.Dependiendo de la cantidad de colores que tenga, la complejidad del método crecerá, por lo que es posible que desee replantear el guardado del color como nombre, ¡tal vez podría guardarlo como una combinación de ARGB y nombre?Usa una clase para mantener esa información?Hay muchas muchas opciones.

De todos modos, su convertidor simple haría algo así:

private SolidColorBrush ColorNameToBrush(string colorName)
{
    Color color = Color.FromArgb(0,0,0,0);
    if (colorName == "Red")
    {
        color = new Color() { R = 255, G = 0, B = 0};
    }
    else if ...
    {

    }

    return new SolidColorBrush(color);
}

Uso de la declaración de conmutación en lugar de sin fin si, si puede ser una mejor idea si tiene muchas cadenas, sin embargo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top