【问题标题】:How to store a Brush in a User Setting如何在用户设置中存储画笔
【发布时间】:2016-04-15 02:46:06
【问题描述】:

我对 C# 和 WPF 还很陌生,我刚刚发现有关读取和存储到用户/应用程序设置的信息。现在我想存储 BrushTextBox 但我找不到它的类型。

我尝试使用SystemDrawing.Color 至少存储颜色,但这样做与我拥有的所有对System.Windows.Media 的引用(例如BrushFontFamily)发生冲突,我宁愿不去那里。

对我这样的新手有什么建议吗?

【问题讨论】:

  • 检查this 答案。它可能会帮助你。

标签: c# wpf configurationmanager brush settings


【解决方案1】:

您可以从Color 获取 HEX 值

string.Format("#{0:X2}{1:X2}{2:X2}{3:X2}", [Color].A, [Color].R, [Color].G, [Color].B);

将十六进制字符串存储到用户设置中。 然后将字符串转换回SolidColorBrush:

SolidColorBrush solidColorBrush = (SolidColorBrush)(new BrushConverter().ConvertFrom("#hexhex"));

【讨论】:

    【解决方案2】:

    感谢this related answer,我就是这样做的:我刚刚实现了一个新的类来在不同类型之间进行转换。

    using MediaColor = System.Windows.Media.Color;
    using DrawingColor = System.Drawing.Color;
    
    public static class ColorConverter
    {
    
        public static MediaColor ToMediaColor(this DrawingColor color)
        {
            return MediaColor.FromArgb(color.A, color.R, color.G, color.B);
        }
    
        public static DrawingColor ToDrawingColor(this MediaColor color)
        {
            return DrawingColor.FromArgb(color.A, color.R, color.G, color.B);
        }
    
    }
    

    在我的应用程序中,我只是调用一个函数来在启动时根据颜色创建画笔:

    MainWindow m = mainWindow;
    
    m.brushWindowBg = new SolidColorBrush(classes.ColorConverter.ToMediaColor(Settings.Default.brushWindowBg));
    m.brushCanvasFg = new SolidColorBrush(classes.ColorConverter.ToMediaColor(Settings.Default.brushCanvasFg));
    m.brushCanvasBg = new SolidColorBrush(classes.ColorConverter.ToMediaColor(Settings.Default.brushCanvasBg));
    //etc.
    

    退出时,我将Brush 颜色转换回Drawing.Color

    MainWindow m = mainWindow;
    
    Settings.Default.brushWindowBg = classes.ColorConverter.ToDrawingColor(m.brushWindowBg.Color);
    Settings.Default.brushCanvasFg = classes.ColorConverter.ToDrawingColor(m.brushCanvasFg.Color);
    Settings.Default.brushCanvasBg = classes.ColorConverter.ToDrawingColor(m.brushCanvasBg.Color);
    //etc.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-11
      • 1970-01-01
      • 2011-06-23
      • 1970-01-01
      • 1970-01-01
      • 2012-07-29
      • 1970-01-01
      相关资源
      最近更新 更多