【问题标题】:WPF SolidColorBrush dilemmaWPF SolidColorBrush 困境
【发布时间】:2013-11-07 06:17:09
【问题描述】:

有谁知道如何在 WPF 中将表示颜色的字符串转换为SolidColorBrush

例如:

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

这就是我想要完成的。 有什么想法吗?

提前致谢。

【问题讨论】:

    标签: wpf brush


    【解决方案1】:

    您必须将字符串转换为 System.Windows.Media.Color,您可以使用静态 ColorConverter.ConvertFromString 方法来完成:

    string colorRed = "Red";
    Color c = (Color)ColorConverter.ConvertFromString(colorRed);
    SolidColorBrush fromStringToColor = new SolidColorBrush(c);
    

    【讨论】:

      【解决方案2】:
              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");
      

      【讨论】:

      • 这不是真的来自像“Red”这样的字符串,不是吗?
      猜你喜欢
      • 2021-05-12
      • 2021-02-24
      • 1970-01-01
      • 1970-01-01
      • 2015-06-16
      • 2013-04-23
      • 1970-01-01
      • 1970-01-01
      • 2011-04-14
      相关资源
      最近更新 更多