/// <inheritdoc/> public override void Draw(object dc, Core2D.Shapes.XCubicBezier cubicBezier, double dx, double dy, ImmutableArray <Core2D.Data.XProperty> db, Core2D.Data.Database.XRecord r) { if (!cubicBezier.IsStroked && !cubicBezier.IsFilled) { return; } var dxf = dc as DxfDocument; var style = cubicBezier.Style; var dxfSpline = CreateCubicSpline( cubicBezier.Point1.X + dx, cubicBezier.Point1.Y + dy, cubicBezier.Point2.X + dx, cubicBezier.Point2.Y + dy, cubicBezier.Point3.X + dx, cubicBezier.Point3.Y + dy, cubicBezier.Point4.X + dx, cubicBezier.Point4.Y + dy); if (cubicBezier.IsFilled) { var fill = ToColor(style.Fill); var fillTransparency = ToTransparency(style.Fill); var bounds = new List <HatchBoundaryPath> { new HatchBoundaryPath( new List <EntityObject> { (Spline)dxfSpline.Clone() }) }; var hatch = new Hatch(HatchPattern.Solid, bounds, false); hatch.Layer = _currentLayer; hatch.Color = fill; hatch.Transparency.Value = fillTransparency; dxf.AddEntity(hatch); } if (cubicBezier.IsStroked) { var stroke = ToColor(style.Stroke); var strokeTansparency = ToTransparency(style.Stroke); var lineweight = ToLineweight(style.Thickness); dxfSpline.Layer = _currentLayer; dxfSpline.Color = stroke; dxfSpline.Transparency.Value = strokeTansparency; dxfSpline.Lineweight = lineweight; dxf.AddEntity(dxfSpline); } }
/// <inheritdoc/> public override void Draw(object dc, Core2D.Shapes.XCubicBezier cubicBezier, double dx, double dy, ImmutableArray <Core2D.Data.XProperty> db, Core2D.Data.Database.XRecord r) { var _gfx = dc as XGraphics; if (cubicBezier.IsFilled) { var path = new XGraphicsPath(); path.AddBezier( _scaleToPage(cubicBezier.Point1.X + dx), _scaleToPage(cubicBezier.Point1.Y + dy), _scaleToPage(cubicBezier.Point2.X + dx), _scaleToPage(cubicBezier.Point2.Y + dy), _scaleToPage(cubicBezier.Point3.X + dx), _scaleToPage(cubicBezier.Point3.Y + dy), _scaleToPage(cubicBezier.Point4.X + dx), _scaleToPage(cubicBezier.Point4.Y + dy)); if (cubicBezier.IsStroked) { _gfx.DrawPath( ToXPen(cubicBezier.Style, _scaleToPage, _sourceDpi, _targetDpi), ToXSolidBrush(cubicBezier.Style.Fill), path); } else { _gfx.DrawPath( ToXSolidBrush(cubicBezier.Style.Fill), path); } } else { if (cubicBezier.IsStroked) { _gfx.DrawBezier( ToXPen(cubicBezier.Style, _scaleToPage, _sourceDpi, _targetDpi), _scaleToPage(cubicBezier.Point1.X + dx), _scaleToPage(cubicBezier.Point1.Y + dy), _scaleToPage(cubicBezier.Point2.X + dx), _scaleToPage(cubicBezier.Point2.Y + dy), _scaleToPage(cubicBezier.Point3.X + dx), _scaleToPage(cubicBezier.Point3.Y + dy), _scaleToPage(cubicBezier.Point4.X + dx), _scaleToPage(cubicBezier.Point4.Y + dy)); } } }