示例#1
0
        public static string ToSKPathFillType(this SP.PathFillType pathFillType)
        {
            switch (pathFillType)
            {
            default:
            case SP.PathFillType.Winding:
                return("SKPathFillType.Winding");

            case SP.PathFillType.EvenOdd:
                return("SKPathFillType.EvenOdd");
            }
        }
示例#2
0
        public static IPathGeometry ToPathGeometry(SP.AddPolyPathCommand addPolyPathCommand, SP.PathFillType fillType, bool isFilled, bool isClosed, IFactory factory)
        {
            if (addPolyPathCommand.Points == null || addPolyPathCommand.Points.Count < 2)
            {
                return(null);
            }

            var geometry = factory.CreatePathGeometry(
                ImmutableArray.Create <IPathFigure>(),
                fillType == SP.PathFillType.EvenOdd ? FillRule.EvenOdd : FillRule.Nonzero);

            var context = factory.CreateGeometryContext(geometry);

            var startX     = addPolyPathCommand.Points[0].X;
            var startY     = addPolyPathCommand.Points[0].Y;
            var startPoint = factory.CreatePointShape(startX, startY);

            context.BeginFigure(startPoint, false);

            for (int i = 1; i < addPolyPathCommand.Points.Count; i++)
            {
                var x     = addPolyPathCommand.Points[i].X;
                var y     = addPolyPathCommand.Points[i].Y;
                var point = factory.CreatePointShape(x, y);
                context.LineTo(point);
            }

            context.SetClosedState(isClosed);

            return(geometry);
        }