There isn't one called Pens
, that's for sure, but it's too odd not to find it. Is it really absent, or am I being blind?
(I'm just looking for a convenience class - for example, Colors.Red
and Brushes.Red
is there, but for pens the shortest appears to be new Pen(Brushes.Red, 1)
)
There is not the associated Pens
class because a Pen
is identified by both a Brush
and a Thickness
rather than just one property.
If you have a need for a set of standard pens (based on some thickness) then you will have to create your own. Another approach would be to create a code generator to supply the appropriate pens.
Here is an example of a class which adds a Pen
for each default 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;
}
}