/// <summary> /// /// </summary> /// <param name="gfx"></param> /// <param name="arc"></param> /// <param name="dx"></param> /// <param name="dy"></param> /// <param name="db"></param> /// <param name="r"></param> public void Draw(object gfx, XArc arc, double dx, double dy, ImmutableArray <ShapeProperty> db, Record r) { var a = GdiArc.FromXArc(arc, dx, dy); if (a.Width <= 0.0 || a.Height <= 0.0) { return; } var _gfx = gfx as Graphics; Brush brush = ToSolidBrush(arc.Style.Fill); Pen pen = ToPen(arc.Style, _scaleToPage); if (arc.IsFilled) { var path = new GraphicsPath(); path.AddArc( _scaleToPage(a.X), _scaleToPage(a.Y), _scaleToPage(a.Width), _scaleToPage(a.Height), (float)a.StartAngle, (float)a.SweepAngle); _gfx.FillPath(brush, path); if (arc.IsStroked) { _gfx.DrawPath(pen, path); } path.Dispose(); } else { if (arc.IsStroked) { _gfx.DrawArc( pen, _scaleToPage(a.X), _scaleToPage(a.Y), _scaleToPage(a.Width), _scaleToPage(a.Height), (float)a.StartAngle, (float)a.SweepAngle); } } brush.Dispose(); pen.Dispose(); }
/// <inheritdoc/> public override void Draw(object dc, XArc arc, double dx, double dy, ImmutableArray <XProperty> db, XRecord r) { var canvas = dc as SKCanvas; using (SKPaint brush = ToSKPaintBrush(arc.Style.Fill)) using (SKPaint pen = ToSKPaintPen(arc.Style, _scaleToPage, _sourceDpi, _targetDpi)) using (var path = new SKPath()) { var a = GdiArc.FromXArc(arc, dx, dy); var rect = new SKRect( _scaleToPage(a.X), _scaleToPage(a.Y), _scaleToPage(a.X + a.Width), _scaleToPage(a.Y + a.Height)); path.AddArc(rect, (float)a.StartAngle, (float)a.SweepAngle); DrawPathInternal(canvas, brush, pen, arc.IsStroked, arc.IsFilled, path); } }