【问题标题】:Is there a "Pens" class to complement "Brushes" and "Colors" in WPF?是否有“笔”类来补充 WPF 中的“画笔”和“颜色”?
【发布时间】:2012-01-28 20:51:10
【问题描述】:

没有一个叫Pens,这是肯定的,但是找不到它太奇怪了。是真的没有,还是我瞎了?

(我只是在寻找一个方便的类 - 例如,Colors.RedBrushes.Red 在那里,但对于钢笔来说,最短的似乎是 new Pen(Brushes.Red, 1)

【问题讨论】:

    标签: wpf colors brushes


    【解决方案1】:

    没有关联的Pens 类,因为PenBrush and a Thickness 标识,而不仅仅是一个属性。

    如果您需要一套标准笔(基于某些粗细),那么您必须自己制作。另一种方法是创建一个代码生成器来提供适当的笔。

    这是一个为每个默认Brush 添加Pen 的类的示例:

    public class DefaultPens
    {
        private Dictionary<Brush, Pen> pens;
    
        public double Thickness
        {
            get;
            private set;
        }
    
        // used like defaultPens[Brushes.Red]
        public Pen this[Brush brush]
        {
            get { return this.pens[brush]; }
        }
    
        public DefaultPens(double thickness)
        {
            this.pens = typeof(Brushes).GetProperties(BindingFlags.Static)
                                       .Where(pi => pi.PropertyType == typeof(Brush))
                                       .Select(pi => pi.GetValue(null, null))
                                       .ToDictionary(
                                           b => b,
                                           b => new Pen(b, thickness));
            this.Thickness = thickness;
        }
    }
    

    【讨论】:

      【解决方案2】:

      没有 Pens 类,因为它是多余的。(虽然你是对的:ColorsBrushes 也有些多余。 )

      为什么?好吧,想想一支笔是什么:它的属性可以用笔画(或:thickness)和颜色(或:brush)来描述。因此,有一个Pen Constructor(Brush, double)

      【讨论】:

      • 我认为它们的冗余量完全相同,即:完全 :) 只是方便/冗长方面。
      猜你喜欢
      • 1970-01-01
      • 2012-06-20
      • 1970-01-01
      • 1970-01-01
      • 2010-12-12
      • 2011-02-23
      • 2011-10-25
      • 2017-10-25
      • 2016-12-11
      相关资源
      最近更新 更多