2009-06-01 24 views
8

¿Alguien sabe cómo convertir una cadena que representa un color en un SolidColorBrush en WPF?WPF SolidColorBrush dilema

Para por ejemplo:

string colorRed = "Red"; 
SolidColorBrush fromStringToColor = new SolidColorBrush(colorRed); 

En cierto modo es lo que estoy tratando de lograr. Alguna idea?

Gracias de antemano.

Respuesta

21

Hay que convertir la cadena en un System.Windows.Media.Color, que se puede hacer utilizando el método ColorConverter.ConvertFromString estática:

string colorRed = "Red"; 
Color c = (Color)ColorConverter.ConvertFromString(colorRed); 
SolidColorBrush fromStringToColor = new SolidColorBrush(c); 
5
 private SolidColorBrush GetColorFromString(string color) 
     { 
      if (color.StartsWith("#")) 
      { 
       if (color.Length == 9) 
        return new SolidColorBrush(
         Color.FromArgb(
          Convert.ToByte(color.Substring(1, 2), 16), 
          Convert.ToByte(color.Substring(3, 2), 16), 
          Convert.ToByte(color.Substring(5, 2), 16), 
          Convert.ToByte(color.Substring(7, 2), 16) 
         ) 
        ); 
       else 
        if (color.Length == 7) 
         return new SolidColorBrush(
          Color.FromArgb(
           0xff, 
           Convert.ToByte(color.Substring(1, 2), 16), 
           Convert.ToByte(color.Substring(3, 2), 16), 
           Convert.ToByte(color.Substring(5, 2), 16) 

          ) 
         ); 
      } 
      else 
      { 
       Type colorType = (typeof(System.Windows.Media.Colors)); 
       if (colorType.GetProperty(color) != null) 
       { 
        object o = colorType.InvokeMember(color, 
        System.Reflection.BindingFlags.GetProperty, null, null, null); if (o != null) 
        { 
         return new SolidColorBrush((Color)o); 
        } 
       } 
      } 
      return new SolidColorBrush(Colors.Transparent); 

     } 

SolidColorBrush c1 = GetColorFromString("Red"); 
SolidColorBrush c2 = GetColorFromString("#ffff0000"); 
SolidColorBrush c3 = GetColorFromString("#ff0000"); 
+0

Eso no es realmente de una cadena como "Red ", sin embargo, ¿verdad? – crdx

+0

He resuelto este código. Ahora esta cadena convertida como "Rojo" –

Cuestiones relacionadas