示例#1
0
        /// <inheritdoc/>
        public override void Draw(object dc, CubicBezierShape cubicBezier, double dx, double dy, object db, object r)
        {
            if (!cubicBezier.IsFilled && !cubicBezier.IsStroked)
            {
                return;
            }

            var _dc = dc as AM.DrawingContext;

            AM.IBrush brush = ToBrush(cubicBezier.Style.Fill);
            AM.Pen    pen   = ToPen(cubicBezier.Style, _scaleToPage);

            var sg = new AM.StreamGeometry();

            using (var sgc = sg.Open())
            {
                sgc.BeginFigure(
                    new A.Point(cubicBezier.Point1.X, cubicBezier.Point1.Y),
                    cubicBezier.IsFilled);

                sgc.CubicBezierTo(
                    new A.Point(cubicBezier.Point2.X, cubicBezier.Point2.Y),
                    new A.Point(cubicBezier.Point3.X, cubicBezier.Point3.Y),
                    new A.Point(cubicBezier.Point4.X, cubicBezier.Point4.Y));

                sgc.EndFigure(false);
            }

            _dc.DrawGeometry(
                cubicBezier.IsFilled ? brush : null,
                cubicBezier.IsStroked ? pen : null,
                sg);
        }
示例#2
0
        private void StartPointInternal(IToolContext context, double x, double y, Modifier modifier)
        {
            Filters?.Any(f => f.Process(context, ref x, ref y));

            var next = context.GetNextPoint(x, y, false, 0.0);

            _cubicBezier = new CubicBezierShape()
            {
                StartPoint = next,
                Point1     = (PointShape)next.Copy(null),
                Point2     = (PointShape)next.Copy(null),
                Point3     = (PointShape)next.Copy(null),
                Style      = context.CurrentStyle
            };
            context.WorkingContainer.Shapes.Add(_cubicBezier);
            context.Renderer.Selected.Add(_cubicBezier);
            context.Renderer.Selected.Add(_cubicBezier.StartPoint);
            context.Renderer.Selected.Add(_cubicBezier.Point1);
            context.Renderer.Selected.Add(_cubicBezier.Point2);
            context.Renderer.Selected.Add(_cubicBezier.Point3);

            context.Capture?.Invoke();
            context.Invalidate?.Invoke();

            CurrentState = State.Point3;
        }
示例#3
0
 internal static void AddCubic(IToolContext context, CubicBezierShape cubicBezier, double dx, double dy, SKPath geometry)
 {
     geometry.MoveTo(ToSKPoint(cubicBezier.StartPoint, dx, dy));
     geometry.CubicTo(
         ToSKPoint(cubicBezier.Point1, dx, dy),
         ToSKPoint(cubicBezier.Point2, dx, dy),
         ToSKPoint(cubicBezier.Point3, dx, dy));
 }
示例#4
0
        /// <inheritdoc/>
        public override void Draw(object dc, CubicBezierShape cubicBezier, double dx, double dy, object db, object 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);
            }
        }
示例#5
0
        public void DrawCubicBezier(object dc, CubicBezierShape cubicBezier, string styleId, double dx, double dy, double scale)
        {
            var geometry = new SKPath()
            {
                FillType = SKPathFillType.Winding
            };

            SkiaHelper.AddCubic(null, cubicBezier, dx, dy, geometry);
            _rootNodes[_currentRootNode].Children.Add(new ChildNode(cubicBezier, styleId, dx, dy, scale, geometry));
        }
示例#6
0
        /// <inheritdoc/>
        public override void Draw(object dc, CubicBezierShape cubicBezier, double dx, double dy, object db, object 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));
                }
            }
        }
示例#7
0
        /// <inheritdoc/>
        CubicBezierShape IShapeFactory.CubicBezier(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4, bool isStroked, bool isFilled)
        {
            var style       = _editor.Project.CurrentStyleLibrary.Selected;
            var cubicBezier = CubicBezierShape.Create(
                x1, y1,
                x2, y2,
                x3, y3,
                x4, y4,
                _editor.Project.Options.CloneStyle ? style.Clone() : style,
                _editor.Project.Options.PointShape,
                isStroked,
                isFilled);

            _editor.Project.AddShape(_editor.Project.CurrentContainer.CurrentLayer, cubicBezier);
            return(cubicBezier);
        }
示例#8
0
        /// <inheritdoc/>
        CubicBezierShape IShapeFactory.CubicBezier(PointShape point1, PointShape point2, PointShape point3, PointShape point4, bool isStroked, bool isFilled)
        {
            var style       = _editor.Project.CurrentStyleLibrary.Selected;
            var cubicBezier = CubicBezierShape.Create(
                point1,
                point2,
                point3,
                point4,
                _editor.Project.Options.CloneStyle ? style.Clone() : style,
                _editor.Project.Options.PointShape,
                isStroked,
                isFilled);

            _editor.Project.AddShape(_editor.Project.CurrentContainer.CurrentLayer, cubicBezier);
            return(cubicBezier);
        }
示例#9
0
        private void CleanInternal(IToolContext context)
        {
            Filters?.ForEach(f => f.Clear(context));

            CurrentState = State.StartPoint;

            if (_cubicBezier != null)
            {
                context.WorkingContainer.Shapes.Remove(_cubicBezier);
                context.Renderer.Selected.Remove(_cubicBezier);
                context.Renderer.Selected.Remove(_cubicBezier.StartPoint);
                context.Renderer.Selected.Remove(_cubicBezier.Point1);
                context.Renderer.Selected.Remove(_cubicBezier.Point2);
                context.Renderer.Selected.Remove(_cubicBezier.Point3);
                _cubicBezier = null;
            }

            context.Release?.Invoke();
            context.Invalidate?.Invoke();
        }
示例#10
0
        /// <inheritdoc/>
        public override void Draw(object dc, CubicBezierShape cubicBezier, double dx, double dy, object db, object r)
        {
            var canvas = dc as SKCanvas;

            using (SKPaint brush = ToSKPaintBrush(cubicBezier.Style.Fill))
                using (SKPaint pen = ToSKPaintPen(cubicBezier.Style, _scaleToPage, _sourceDpi, _targetDpi))
                    using (var path = new SKPath())
                    {
                        path.MoveTo(
                            _scaleToPage(cubicBezier.Point1.X + dx),
                            _scaleToPage(cubicBezier.Point1.Y + dy));
                        path.CubicTo(
                            _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));
                        DrawPathInternal(canvas, brush, pen, cubicBezier.IsStroked, cubicBezier.IsFilled, path);
                    }
        }
示例#11
0
        private void Point1Internal(IToolContext context, double x, double y, Modifier modifier)
        {
            Filters?.Any(f => f.Process(context, ref x, ref y));

            CurrentState = State.StartPoint;

            context.Renderer.Selected.Remove(_cubicBezier);
            context.Renderer.Selected.Remove(_cubicBezier.StartPoint);
            context.Renderer.Selected.Remove(_cubicBezier.Point1);
            context.Renderer.Selected.Remove(_cubicBezier.Point2);
            context.Renderer.Selected.Remove(_cubicBezier.Point3);
            context.WorkingContainer.Shapes.Remove(_cubicBezier);

            _cubicBezier.Point1 = context.GetNextPoint(x, y, false, 0.0);
            context.CurrentContainer.Shapes.Add(_cubicBezier);
            _cubicBezier = null;

            Filters?.ForEach(f => f.Clear(context));

            context.Release?.Invoke();
            context.Invalidate?.Invoke();
        }
示例#12
0
        /// <inheritdoc/>
        public override void Draw(object dc, CubicBezierShape cubicBezier, double dx, double dy, object db, object r)
        {
            var _gfx = dc as Graphics;

            Brush brush = ToSolidBrush(cubicBezier.Style.Fill);
            Pen   pen   = ToPen(cubicBezier.Style, _scaleToPage);

            if (cubicBezier.IsFilled)
            {
                var path = new GraphicsPath();
                path.AddBezier(
                    _scaleToPage(cubicBezier.Point1.X),
                    _scaleToPage(cubicBezier.Point1.Y),
                    _scaleToPage(cubicBezier.Point2.X),
                    _scaleToPage(cubicBezier.Point2.Y),
                    _scaleToPage(cubicBezier.Point3.X),
                    _scaleToPage(cubicBezier.Point3.Y),
                    _scaleToPage(cubicBezier.Point4.X),
                    _scaleToPage(cubicBezier.Point4.Y));
                _gfx.FillPath(brush, path);
            }

            if (cubicBezier.IsStroked)
            {
                _gfx.DrawBezier(
                    pen,
                    _scaleToPage(cubicBezier.Point1.X),
                    _scaleToPage(cubicBezier.Point1.Y),
                    _scaleToPage(cubicBezier.Point2.X),
                    _scaleToPage(cubicBezier.Point2.Y),
                    _scaleToPage(cubicBezier.Point3.X),
                    _scaleToPage(cubicBezier.Point3.Y),
                    _scaleToPage(cubicBezier.Point4.X),
                    _scaleToPage(cubicBezier.Point4.Y));
            }

            brush.Dispose();
            pen.Dispose();
        }
示例#13
0
        internal static PathShape ToPathShape(IToolContext context, SKPath path, ShapeStyle style, IBaseShape pointTemplate)
        {
            var pathShape = new PathShape()
            {
                Points   = new ObservableCollection <IPointShape>(),
                Shapes   = new ObservableCollection <IBaseShape>(),
                FillType = ToPathFillType(path.FillType),
                Text     = new Text(),
                StyleId  = style.Title
            };

            var figureShape = default(FigureShape);

            using (var iterator = path.CreateRawIterator())
            {
                var points     = new SKPoint[4];
                var pathVerb   = SKPathVerb.Move;
                var firstPoint = new SKPoint();
                var lastPoint  = new SKPoint();

                while ((pathVerb = iterator.Next(points)) != SKPathVerb.Done)
                {
                    switch (pathVerb)
                    {
                    case SKPathVerb.Move:
                    {
                        figureShape = new FigureShape()
                        {
                            Points   = new ObservableCollection <IPointShape>(),
                            Shapes   = new ObservableCollection <IBaseShape>(),
                            IsFilled = true,
                            IsClosed = false
                        };
                        figureShape.Owner = pathShape;
                        pathShape.Shapes.Add(figureShape);
                        firstPoint = lastPoint = points[0];
                    }
                    break;

                    case SKPathVerb.Line:
                    {
                        var lastPointShape = pathShape.GetLastPoint();
                        if (lastPointShape == null)
                        {
                            lastPointShape = new PointShape(points[0].X, points[0].Y, pointTemplate);
                        }
                        var lineShape = new LineShape()
                        {
                            Points     = new ObservableCollection <IPointShape>(),
                            StartPoint = lastPointShape,
                            Point      = new PointShape(points[1].X, points[1].Y, pointTemplate),
                            Text       = new Text(),
                            StyleId    = style.Title
                        };
                        lineShape.Owner            = figureShape;
                        lineShape.StartPoint.Owner = lineShape;
                        lineShape.Point.Owner      = lineShape;
                        figureShape.Shapes.Add(lineShape);
                        lastPoint = points[1];
                    }
                    break;

                    case SKPathVerb.Cubic:
                    {
                        var lastPointShape = pathShape.GetLastPoint();
                        if (lastPointShape == null)
                        {
                            lastPointShape = new PointShape(points[0].X, points[0].Y, pointTemplate);
                        }
                        var cubicBezierShape = new CubicBezierShape()
                        {
                            Points     = new ObservableCollection <IPointShape>(),
                            StartPoint = lastPointShape,
                            Point1     = new PointShape(points[1].X, points[1].Y, pointTemplate),
                            Point2     = new PointShape(points[2].X, points[2].Y, pointTemplate),
                            Point3     = new PointShape(points[3].X, points[3].Y, pointTemplate),
                            Text       = new Text(),
                            StyleId    = style.Title
                        };
                        cubicBezierShape.Owner            = figureShape;
                        cubicBezierShape.StartPoint.Owner = cubicBezierShape;
                        cubicBezierShape.Point1.Owner     = cubicBezierShape;
                        cubicBezierShape.Point2.Owner     = cubicBezierShape;
                        cubicBezierShape.Point3.Owner     = cubicBezierShape;
                        figureShape.Shapes.Add(cubicBezierShape);
                        lastPoint = points[3];
                    }
                    break;

                    case SKPathVerb.Quad:
                    {
                        var lastPointShape = pathShape.GetLastPoint();
                        if (lastPointShape == null)
                        {
                            lastPointShape = new PointShape(points[0].X, points[0].Y, pointTemplate);
                        }
                        var quadraticBezierShape = new QuadraticBezierShape()
                        {
                            Points     = new ObservableCollection <IPointShape>(),
                            StartPoint = lastPointShape,
                            Point1     = new PointShape(points[1].X, points[1].Y, pointTemplate),
                            Point2     = new PointShape(points[2].X, points[2].Y, pointTemplate),
                            Text       = new Text(),
                            StyleId    = style.Title
                        };
                        quadraticBezierShape.Owner            = figureShape;
                        quadraticBezierShape.StartPoint.Owner = quadraticBezierShape;
                        quadraticBezierShape.Point1.Owner     = quadraticBezierShape;
                        quadraticBezierShape.Point2.Owner     = quadraticBezierShape;
                        figureShape.Shapes.Add(quadraticBezierShape);
                        lastPoint = points[2];
                    }
                    break;

                    case SKPathVerb.Conic:
                    {
                        var lastPointShape = pathShape.GetLastPoint();
                        if (lastPointShape == null)
                        {
                            lastPointShape = new PointShape(points[0].X, points[0].Y, pointTemplate);
                        }
                        var conicShape = new ConicShape()
                        {
                            Points     = new ObservableCollection <IPointShape>(),
                            StartPoint = lastPointShape,
                            Point1     = new PointShape(points[1].X, points[1].Y, pointTemplate),
                            Point2     = new PointShape(points[2].X, points[2].Y, pointTemplate),
                            Weight     = iterator.ConicWeight(),
                            Text       = new Text(),
                            StyleId    = style.Title
                        };
                        conicShape.Owner            = figureShape;
                        conicShape.StartPoint.Owner = conicShape;
                        conicShape.Point1.Owner     = conicShape;
                        conicShape.Point2.Owner     = conicShape;
                        figureShape.Shapes.Add(conicShape);
                        lastPoint = points[2];
                    }
                    break;

                    case SKPathVerb.Close:
                    {
#if USE_CLOSE_SHAPE
                        var line = new LineShape()
                        {
                            Points     = new ObservableCollection <IPointShape>(),
                            StartPoint = pathShape.GetLastPoint(),
                            Point      = pathShape.GetFirstPoint(),
                            Text       = new Text(),
                            StyleId    = style.Title
                        };
                        line.Owner            = figureShape;
                        line.StartPoint.Owner = line;
                        line.Point.Owner      = line;
                        figureShape.Shapes.Add(line);
#else
                        figureShape.IsClosed = true;
                        firstPoint           = lastPoint = new SKPoint(0, 0);
#endif
                    }
                    break;
                    }
                }
            }

            return(pathShape);
        }
示例#14
0
 public abstract void DrawCubicBezier(object dc, CubicBezierShape cubicBezier, ShapeStyle style, double dx, double dy);
示例#15
0
        /// <inheritdoc/>
        public override void Draw(object dc, CubicBezierShape cubicBezier, double dx, double dy, object db, object r)
        {
            var _dc = dc as DrawingContext;

            var style = cubicBezier.Style;

            if (style == null)
            {
                return;
            }

            double thickness = style.Thickness / _state.ZoomX;
            double half      = thickness / 2.0;

            Tuple <Brush, Pen> styleCached = _styleCache.Get(style);
            Brush fill;
            Pen   stroke;

            if (styleCached != null)
            {
                fill   = styleCached.Item1;
                stroke = styleCached.Item2;
            }
            else
            {
                fill   = CreateBrush(style.Fill);
                stroke = CreatePen(style, thickness);
                _styleCache.Set(style, Tuple.Create(fill, stroke));
            }

            System.Windows.Media.PathGeometry pg = _cubicBezierCache.Get(cubicBezier);
            if (pg != null)
            {
                var pf = pg.Figures[0];
                pf.StartPoint = new Point(cubicBezier.Point1.X + dx, cubicBezier.Point1.Y + dy);
                pf.IsFilled   = cubicBezier.IsFilled;
                var bs = pf.Segments[0] as BezierSegment;
                bs.Point1    = new Point(cubicBezier.Point2.X + dx, cubicBezier.Point2.Y + dy);
                bs.Point2    = new Point(cubicBezier.Point3.X + dx, cubicBezier.Point3.Y + dy);
                bs.Point3    = new Point(cubicBezier.Point4.X + dx, cubicBezier.Point4.Y + dy);
                bs.IsStroked = cubicBezier.IsStroked;
            }
            else
            {
                var pf = new System.Windows.Media.PathFigure()
                {
                    StartPoint = new Point(cubicBezier.Point1.X + dx, cubicBezier.Point1.Y + dy),
                    IsFilled   = cubicBezier.IsFilled
                };
                var bs = new BezierSegment(
                    new Point(cubicBezier.Point2.X + dx, cubicBezier.Point2.Y + dy),
                    new Point(cubicBezier.Point3.X + dx, cubicBezier.Point3.Y + dy),
                    new Point(cubicBezier.Point4.X + dx, cubicBezier.Point4.Y + dy),
                    cubicBezier.IsStroked);
                //bs.Freeze();
                pf.Segments.Add(bs);
                //pf.Freeze();
                pg = new System.Windows.Media.PathGeometry();
                pg.Figures.Add(pf);
                //pg.Freeze();

                _cubicBezierCache.Set(cubicBezier, pg);
            }

            DrawPathGeometryInternal(_dc, half, fill, stroke, cubicBezier.IsStroked, cubicBezier.IsFilled, pg);
        }
示例#16
0
        public void Inherits_From_BaseShape()
        {
            var target = new CubicBezierShape();

            Assert.True(target is BaseShape);
        }
示例#17
0
        /// <summary>
        /// Initializes static designer context.
        /// </summary>
        /// <param name="serviceProvider">The service provider.</param>
        public static void InitializeContext(IServiceProvider serviceProvider)
        {
            // Editor

            Editor = serviceProvider.GetService <ProjectEditor>();

            // Recent Projects

            Editor.RecentProjects = Editor.RecentProjects.Add(RecentFile.Create("Test1", "Test1.project"));
            Editor.RecentProjects = Editor.RecentProjects.Add(RecentFile.Create("Test2", "Test2.project"));

            // New Project

            Editor.OnNewProject();

            // Transform

            Transform = MatrixObject.Identity;

            // Data

            var db      = Database.Create("Db");
            var fields  = new string[] { "Column0", "Column1" };
            var columns = ImmutableArray.CreateRange(fields.Select(c => Column.Create(db, c)));

            db.Columns = columns;
            var values = Enumerable.Repeat("<empty>", db.Columns.Length).Select(c => Value.Create(c));
            var record = Record.Create(
                db,
                ImmutableArray.CreateRange(values));

            db.Records       = db.Records.Add(record);
            db.CurrentRecord = record;

            Database = db;
            Data     = Context.Create(record);
            Record   = record;

            // Project

            IProjectFactory factory = new ProjectFactory();

            Project = factory.GetProject();

            Template = PageContainer.CreateTemplate();

            Page = PageContainer.CreatePage();
            var layer = Page.Layers.FirstOrDefault();

            layer.Shapes      = layer.Shapes.Add(LineShape.Create(0, 0, null, null));
            Page.CurrentLayer = layer;
            Page.CurrentShape = layer.Shapes.FirstOrDefault();
            Page.Template     = Template;

            Document = DocumentContainer.Create();
            Layer    = LayerContainer.Create();
            Options  = Options.Create();

            // State

            State = ShapeState.Create();

            // Style

            ArgbColor       = ArgbColor.Create(128, 255, 0, 0);
            ArrowStyle      = ArrowStyle.Create();
            FontStyle       = FontStyle.Create();
            LineFixedLength = LineFixedLength.Create();
            LineStyle       = LineStyle.Create();
            Style           = ShapeStyle.Create("Default");
            TextStyle       = TextStyle.Create();

            // Shapes

            Arc             = ArcShape.Create(0, 0, Style, null);
            CubicBezier     = CubicBezierShape.Create(0, 0, Style, null);
            Ellipse         = EllipseShape.Create(0, 0, Style, null);
            Group           = GroupShape.Create(Constants.DefaulGroupName);
            Image           = ImageShape.Create(0, 0, Style, null, "key");
            Line            = LineShape.Create(0, 0, Style, null);
            Path            = PathShape.Create(Style, null);
            Point           = PointShape.Create();
            QuadraticBezier = QuadraticBezierShape.Create(0, 0, Style, null);
            Rectangle       = RectangleShape.Create(0, 0, Style, null);
            Text            = TextShape.Create(0, 0, Style, null, "Text");

            // Path

            ArcSegment                 = ArcSegment.Create(PointShape.Create(), PathSize.Create(), 180, true, SweepDirection.Clockwise, true, true);
            CubicBezierSegment         = CubicBezierSegment.Create(PointShape.Create(), PointShape.Create(), PointShape.Create(), true, true);
            LineSegment                = LineSegment.Create(PointShape.Create(), true, true);
            PathFigure                 = PathFigure.Create(PointShape.Create(), false, true);
            PathGeometry               = PathGeometry.Create(ImmutableArray.Create <PathFigure>(), FillRule.EvenOdd);
            PathSize                   = PathSize.Create();
            PolyCubicBezierSegment     = PolyCubicBezierSegment.Create(ImmutableArray.Create <PointShape>(), true, true);
            PolyLineSegment            = PolyLineSegment.Create(ImmutableArray.Create <PointShape>(), true, true);
            PolyQuadraticBezierSegment = PolyQuadraticBezierSegment.Create(ImmutableArray.Create <PointShape>(), true, true);
            QuadraticBezierSegment     = QuadraticBezierSegment.Create(PointShape.Create(), PointShape.Create(), true, true);
        }
示例#18
0
 public void Draw(object dc, IShapeRenderer renderer, CubicBezierShape cubicBezier, double dx, double dy, double scale)
 {
     DrawLine(dc, renderer, cubicBezier.StartPoint, cubicBezier.Point1, dx, dy, scale);
     DrawLine(dc, renderer, cubicBezier.Point3, cubicBezier.Point2, dx, dy, scale);
     DrawLine(dc, renderer, cubicBezier.Point1, cubicBezier.Point2, dx, dy, scale);
 }