2009-06-01 22 views
8

Có ai biết cách chuyển đổi một chuỗi đại diện cho một màu thành SolidColorBrush trong WPF không?WPF SolidColorBrush dilemma

Đối với ví dụ:

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

Đó là loại gì tôi đang cố gắng để đạt được. Bất kỳ ý tưởng nào?

Xin cảm ơn trước.

Trả lời

21

Bạn cần phải chuyển đổi chuỗi thành một System.Windows.Media.Color, mà bạn có thể thực hiện bằng cách sử dụng phương pháp ColorConverter.ConvertFromString tĩnh:

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

Đó không phải là thực sự từ một chuỗi như "Red ", tuy nhiên, là nó? – crdx

+0

Tôi đã sửa mã này. Bây giờ chuỗi được chuyển đổi này là "Đỏ" –

Các vấn đề liên quan