Ejemplo n.º 1
0
        /// <summary>
        /// Create  quadratic bezier path
        /// </summary>
        public void QuadraticBezierTo(Point point1, Point point2, bool isStroked, bool isSmoothJoin)
        {
            var bezier = new GraphicQuadraticBezierSegment();

            currentPath.Segments.Add(bezier);

            bezier.ControlPoint = point1;
            bezier.EndPoint     = point2;
        }
Ejemplo n.º 2
0
        private List <GraphicPathSegment> TransformSegments(List <GraphicPathSegment> segments)
        {
            var transformedSegments = new List <GraphicPathSegment>();

            foreach (var segment in segments)
            {
                switch (segment)
                {
                case GraphicMoveSegment graphicMove:
                {
                    var normalizedMove = new GraphicMoveSegment();
                    transformedSegments.Add(normalizedMove);

                    normalizedMove.StartPoint = MatrixUtilities.TransformPoint(graphicMove.StartPoint, transformMatrix);
                    normalizedMove.IsClosed   = graphicMove.IsClosed;
                    break;
                }

                case GraphicLineSegment graphicLineTo:
                {
                    var normalizedLineTo = new GraphicLineSegment();
                    transformedSegments.Add(normalizedLineTo);

                    normalizedLineTo.To = MatrixUtilities.TransformPoint(graphicLineTo.To, transformMatrix);
                    break;
                }

                case GraphicCubicBezierSegment graphicCubicBezier:
                {
                    var normalizedCubicBezier = new GraphicCubicBezierSegment();
                    transformedSegments.Add(normalizedCubicBezier);

                    normalizedCubicBezier.ControlPoint1 = MatrixUtilities.TransformPoint(graphicCubicBezier.ControlPoint1, transformMatrix);
                    normalizedCubicBezier.ControlPoint2 = MatrixUtilities.TransformPoint(graphicCubicBezier.ControlPoint2, transformMatrix);
                    normalizedCubicBezier.EndPoint      = MatrixUtilities.TransformPoint(graphicCubicBezier.EndPoint, transformMatrix);
                    break;
                }

                case GraphicQuadraticBezierSegment graphicQuadraticBezier:
                {
                    var normalizedQuadraticBezier = new GraphicQuadraticBezierSegment();
                    transformedSegments.Add(normalizedQuadraticBezier);

                    normalizedQuadraticBezier.ControlPoint = MatrixUtilities.TransformPoint(graphicQuadraticBezier.ControlPoint, transformMatrix);
                    normalizedQuadraticBezier.EndPoint     = MatrixUtilities.TransformPoint(graphicQuadraticBezier.EndPoint, transformMatrix);
                    break;
                }

                default:
                    break;
                }
            }

            return(transformedSegments);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Normalizes the specified graphic path.
        /// </summary>
        private GraphicPathGeometry NormalizeGeometry(GraphicPathGeometry graphicPathGeometry)
        {
            GraphicPathGeometry normalizedGeometry = new GraphicPathGeometry();

            normalizedGeometry.FillRule = graphicPathGeometry.FillRule;

            foreach (var pathElement in graphicPathGeometry.Segments)
            {
                switch (pathElement)
                {
                case GraphicMoveSegment graphicMove:
                {
                    var normalizedMove = new GraphicMoveSegment();
                    normalizedGeometry.Segments.Add(normalizedMove);

                    normalizedMove.StartPoint = NormalizePoint(graphicMove.StartPoint);
                    normalizedMove.IsClosed   = graphicMove.IsClosed;
                    break;
                }

                case GraphicLineSegment graphicLineTo:
                {
                    var normalizedLineTo = new GraphicLineSegment();
                    normalizedGeometry.Segments.Add(normalizedLineTo);

                    normalizedLineTo.To = NormalizePoint(graphicLineTo.To);
                    break;
                }

                case GraphicCubicBezierSegment graphicCubicBezier:
                {
                    var normalizedCubicBezier = new GraphicCubicBezierSegment();
                    normalizedGeometry.Segments.Add(normalizedCubicBezier);

                    normalizedCubicBezier.ControlPoint1 = NormalizePoint(graphicCubicBezier.ControlPoint1);
                    normalizedCubicBezier.ControlPoint2 = NormalizePoint(graphicCubicBezier.ControlPoint2);
                    normalizedCubicBezier.EndPoint      = NormalizePoint(graphicCubicBezier.EndPoint);
                    break;
                }

                case GraphicQuadraticBezierSegment graphicQuadraticBezier:
                {
                    var normalizedQuadraticBezier = new GraphicQuadraticBezierSegment();
                    normalizedGeometry.Segments.Add(normalizedQuadraticBezier);

                    normalizedQuadraticBezier.ControlPoint = NormalizePoint(graphicQuadraticBezier.ControlPoint);
                    normalizedQuadraticBezier.EndPoint     = NormalizePoint(graphicQuadraticBezier.EndPoint);
                    break;
                }
                }
            }

            return(normalizedGeometry);
        }