【问题标题】:How to convert string to SolidColorBrush in C#? [duplicate]如何在 C# 中将字符串转换为 SolidColorBrush? [复制]
【发布时间】:2015-02-02 20:57:26
【问题描述】:

我正在尝试在 C# 中将 string 转换为 SolidColorBrush。我使用的代码是:

arrColors[arrColors.Length - 1] = 
                         (SolidColorBrush)new BrushConverter().ConvertFromString(sLine);

其中 sLine 是从文本文件中读取的字符串。例如,sLine 可能是“黑色”。

这段代码给了我一个FormatException

【问题讨论】:

    标签: c# wpf string solidcolorbrush


    【解决方案1】:

    假设你所有的画笔都是纯色的,你可以从一个字符串构造一个 Color 如下:

    Color color = (Color)ColorConverter.ConvertFromString(sLine);
    

    然后您可以从该颜色创建SolidColorBrush,如下所示:

    SolidColorBrush brush = new SolidColorBrush(color);
    

    编辑:如果要转换的字符串是英语但当前文化不是,您可能需要改用ConvertFromInvariantString,如下所示:

    ColorConverter converter = new ColorConverter();
    Color color = (Color)converter.ConvertFromInvariantString(sLine);
    

    【讨论】:

    • 谢谢,但是我需要使用 Color.FromName 的 using 语句吗?现在它告诉我“System.Windows.Media.Color”不包含“FromName”的定义。
    • 是的@TaW。事实是我的数组中有几种颜色。所以我不能使用 Color.FromName("Black") 或类似的东西。
    • @NielsBril:我已经调整了适用于 WPF 类的解决方案,但我没有意识到这是您使用的。
    • @NielsBril 我再次编辑了我的解决方案;我从您的源代码示例中假设可能使用了错误的 CultureInfo。在这种情况下,应该使用不变的文化。
    • @Quackmatic 仍未解决 :( 我无法使用 ConvertFromInvariantString 方法。有什么方法可以将项目发送给您吗?
    【解决方案2】:

    试试这个:

    var color = (Color)ColorConverter.ConvertFromString(sLine);
    var brush = new SolidColorBrush(color);
    

    【讨论】:

      猜你喜欢
      • 2020-09-18
      • 2014-03-30
      • 2015-07-04
      • 2010-09-17
      • 2016-01-26
      • 2014-12-15
      • 2012-03-28
      • 2020-12-19
      • 1970-01-01
      相关资源
      最近更新 更多