private System.Drawing.Pen InterpolatePen(System.Drawing.Pen min, System.Drawing.Pen max, double attr)
{
if (min.PenType!= System.Drawing.Drawing2D.PenType.SolidColor|| max.PenType != System.Drawing.Drawing2D.PenType.SolidColor)
throw (new ArgumentException("Only SolidColor pens are supported in GradientTheme"));
System.Drawing.Pen pen = new System.Drawing.Pen(InterpolateColor(min.Color, max.Color, attr),InterpolateFloat(min.Width, max.Width,attr));
double frac = Fraction(attr);
pen.MiterLimit = InterpolateFloat(min.MiterLimit, max.MiterLimit, attr);
pen.StartCap = (frac > 0.5 ? max.StartCap : min.StartCap);
pen.EndCap = (frac > 0.5 ? max.EndCap : min.EndCap);
pen.LineJoin = (frac > 0.5 ? max.LineJoin : min.LineJoin);
pen.DashStyle = (frac > 0.5 ? max.DashStyle : min.DashStyle);
if(min.DashStyle==System.Drawing.Drawing2D.DashStyle.Custom && max.DashStyle==System.Drawing.Drawing2D.DashStyle.Custom)
pen.DashPattern = (frac > 0.5 ? max.DashPattern : min.DashPattern);
pen.DashOffset = (frac > 0.5 ? max.DashOffset : min.DashOffset);
pen.DashCap = (frac > 0.5 ? max.DashCap : min.DashCap);
if(min.CompoundArray.Length>0 && max.CompoundArray.Length>0)
pen.CompoundArray = (frac > 0.5 ? max.CompoundArray : min.CompoundArray);
pen.Alignment = (frac > 0.5 ? max.Alignment : min.Alignment);
//pen.CustomStartCap = (frac > 0.5 ? max.CustomStartCap : min.CustomStartCap); //Throws ArgumentException
//pen.CustomEndCap = (frac > 0.5 ? max.CustomEndCap : min.CustomEndCap); //Throws ArgumentException
return pen;
}