[英]Is there a “Pens” class to complement “Brushes” and “Colors” in WPF?
沒有一個叫Pens
,這是肯定的,但是找不到它太奇怪了。 它真的缺席了,還是我失明了?
(我只是在尋找一個便利類 - 例如, Colors.Red
和Brushes.Red
就在那里,但對於筆來說,最短的似乎是new Pen(Brushes.Red, 1)
)
沒有關聯的Pens
類,因為Pen
由Brush
和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;
}
}
沒有 Pens
類,因為它是多余的。 (雖然你是對的: Colors
和Brushes
也有些多余。)
為什么? 好吧,只要考慮一下筆是什么:它的屬性可以用(或: 厚度 )和顏色(或: 畫筆 )的筆划來描述。 因此,有一個Pen構造函數(Brush,double) 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.