2009-06-01 11 views
8

誰かが、色を表す文字列をWPFのSolidColorBrushに変換する方法を知っていますか?例えばのためにWPF SolidColorBrushジレンマ

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

私が達成しようとしているものの一種です。 アイデア

ありがとうございます。あなたは、静的ColorConverter.ConvertFromStringメソッドを使用していますが、これはSystem.Windows.Media.Colorに文字列を変換する必要があり

答えて

21

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

私はこのコードを修正しました。今、このように変換された文字列 "Red" –