6

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

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

4

2 回答 2

1

没有关联的Pens类,因为 aPen由 aBrush和 aThickness标识,而不仅仅是一个属性。

如果您需要一套标准笔(基于一定的厚度),那么您将不得不创建自己的。另一种方法是创建一个代码生成器来提供适当的笔。

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

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;
    }
}
于 2011-12-28T01:43:26.847 回答
1

没有 Pens 类,因为它是多余的。(尽管您是对的:Colors并且Brushes也有些多余。)

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

于 2011-12-28T02:00:34.060 回答