2009-06-01 3 views
8

Кто-нибудь знает, как преобразовать строку, представляющую цвет, в SolidColorBrush в WPF?WPF SolidColorBrush dilemma

Для например:

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

Это своего рода то, что я пытаюсь сделать. Любые идеи?

Заранее спасибо.

ответ

21

Вы должны преобразовать строку в System.Windows.Media.Color, которые вы можете сделать с помощью статического метода 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

Это не совсем из строки, как «Красный », правда? – crdx

+0

Я исправил этот код. Теперь эта преобразованная строка, такая как «Красный», –