2009-06-01 11 views
8

Qualcuno sa come convertire una stringa che rappresenta un colore in un SolidColorBrush in WPF?WPF SolidColorBrush dilemma

Per es:

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

Questo è una sorta di quello che sto cercando di realizzare. Qualche idea?

Grazie in anticipo.

risposta

21

Dovete convertire la stringa in uno System.Windows.Media.Color, che si può fare utilizzando il metodo statico ColorConverter.ConvertFromString:

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

che non è proprio da una stringa come "Rosso ", però, è così? – crdx

+0

Ho risolto questo codice. Ora questa stringa convertita come "Red" –