Beispiel #1
0
 public static void GrokPathPointPrecision(PathGeometry geometry, int decimalNumber)
 {
     if (geometry == null)
     {
         return;
     }
     for (int index1 = 0; index1 < geometry.Figures.Count; ++index1)
     {
         PathFigure pathFigure = geometry.Figures[index1];
         pathFigure.StartPoint = PathCommandHelper.Round(pathFigure.StartPoint, decimalNumber);
         for (int index2 = 0; index2 < pathFigure.Segments.Count; ++index2)
         {
             PathSegment pathSegment = pathFigure.Segments[index2];
             if (pathSegment is BezierSegment)
             {
                 BezierSegment bezierSegment = pathSegment as BezierSegment;
                 bezierSegment.Point1 = PathCommandHelper.Round(bezierSegment.Point1, decimalNumber);
                 bezierSegment.Point2 = PathCommandHelper.Round(bezierSegment.Point2, decimalNumber);
                 bezierSegment.Point3 = PathCommandHelper.Round(bezierSegment.Point3, decimalNumber);
             }
             else if (pathSegment is LineSegment)
             {
                 LineSegment lineSegment = pathSegment as LineSegment;
                 lineSegment.Point = PathCommandHelper.Round(lineSegment.Point, decimalNumber);
             }
             else if (pathSegment is QuadraticBezierSegment)
             {
                 QuadraticBezierSegment quadraticBezierSegment = pathSegment as QuadraticBezierSegment;
                 quadraticBezierSegment.Point1 = PathCommandHelper.Round(quadraticBezierSegment.Point1, decimalNumber);
                 quadraticBezierSegment.Point2 = PathCommandHelper.Round(quadraticBezierSegment.Point2, decimalNumber);
             }
             else if (pathSegment is PolyLineSegment)
             {
                 PointCollection points = (pathSegment as PolyLineSegment).Points;
                 for (int index3 = 0; index3 < points.Count; ++index3)
                 {
                     points[index3] = PathCommandHelper.Round(points[index3], decimalNumber);
                 }
             }
             else if (pathSegment is PolyQuadraticBezierSegment)
             {
                 PointCollection points = (pathSegment as PolyQuadraticBezierSegment).Points;
                 int             index3 = 0;
                 while (index2 < points.Count)
                 {
                     points[index3] = PathCommandHelper.Round(points[index3], decimalNumber);
                     ++index3;
                 }
             }
             else if (pathSegment is PolyBezierSegment)
             {
                 PointCollection points = (pathSegment as PolyBezierSegment).Points;
                 for (int index3 = 0; index3 < points.Count; ++index3)
                 {
                     points[index3] = PathCommandHelper.Round(points[index3], decimalNumber);
                 }
             }
             else if (pathSegment is ArcSegment)
             {
                 ArcSegment arcSegment = pathSegment as ArcSegment;
                 arcSegment.Point = PathCommandHelper.Round(arcSegment.Point, decimalNumber);
             }
         }
     }
 }
Beispiel #2
0
 public static Point Round(Point point, int decimalNumber)
 {
     return(new Point(PathCommandHelper.Round(point.X, decimalNumber), PathCommandHelper.Round(point.Y, decimalNumber)));
 }