public override void DrawGeometry (Brush brush, Pen pen, Geometry geometry) { if (brush != null) { if (brush is SolidColorBrush) { var b = brush as SolidColorBrush; cr.Color = new Cairo.Color (b.Color.R, b.Color.G, b.Color.B, b.Color.Alfa); DrawGeometry (geometry); cr.Fill (); } else if (brush is LinearGradientBrush) { var b = brush as LinearGradientBrush; var pattern = new Cairo.LinearGradient (b.StartPoint.X, b.StartPoint.Y, b.EndPoint.X, b.EndPoint.Y); foreach (var stop in b.GradientStops) { pattern.AddColorStop (stop.Offset, new Cairo.Color (stop.Color.R, stop.Color.G, stop.Color.B, stop.Color.Alfa)); } cr.Pattern = pattern; DrawGeometry (geometry); cr.Fill (); } } if (pen != null) { cr.Color = new Cairo.Color (pen.Color.R, pen.Color.G, pen.Color.B, pen.Color.Alfa); cr.LineWidth = pen.Thickness; DrawGeometry (geometry); cr.Stroke (); } }
private void DrawGeometry (Geometry geometry) { if (geometry is PathGeometry) { var path = geometry as PathGeometry; foreach (var figure in path.Figures) { DrawFigure (figure); } } }
public abstract void DrawGeometry (Brush brush, Pen pen, Geometry geometry);