Esempio n. 1
0
 private static void ReplacePolySegments(PathSegmentCollection pathSegments)
 {
     for (int index1 = 0; index1 < pathSegments.Count; ++index1)
     {
         PathSegment     pathSegment     = pathSegments[index1];
         PolyLineSegment polyLineSegment = pathSegment as PolyLineSegment;
         if (polyLineSegment != null)
         {
             pathSegments.RemoveAt(index1);
             for (int index2 = 0; index2 < polyLineSegment.Points.Count; ++index2)
             {
                 LineSegment lineSegment = PathSegmentUtilities.CreateLineSegment(polyLineSegment.Points[index2], polyLineSegment.IsStroked);
                 pathSegments.Insert(index1, (PathSegment)lineSegment);
                 ++index1;
             }
             --index1;
         }
         PolyQuadraticBezierSegment quadraticBezierSegment1 = pathSegment as PolyQuadraticBezierSegment;
         if (quadraticBezierSegment1 != null)
         {
             pathSegments.RemoveAt(index1);
             int index2 = 0;
             while (index2 < quadraticBezierSegment1.Points.Count - 1)
             {
                 QuadraticBezierSegment quadraticBezierSegment2 = PathSegmentUtilities.CreateQuadraticBezierSegment(quadraticBezierSegment1.Points[index2], quadraticBezierSegment1.Points[index2 + 1], quadraticBezierSegment1.IsStroked);
                 pathSegments.Insert(index1, (PathSegment)quadraticBezierSegment2);
                 ++index1;
                 index2 += 2;
             }
             --index1;
         }
         PolyBezierSegment polyBezierSegment = pathSegment as PolyBezierSegment;
         if (polyBezierSegment != null)
         {
             pathSegments.RemoveAt(index1);
             int index2 = 0;
             while (index2 < polyBezierSegment.Points.Count - 2)
             {
                 BezierSegment bezierSegment = PathSegmentUtilities.CreateBezierSegment(polyBezierSegment.Points[index2], polyBezierSegment.Points[index2 + 1], polyBezierSegment.Points[index2 + 2], polyBezierSegment.IsStroked);
                 pathSegments.Insert(index1, (PathSegment)bezierSegment);
                 ++index1;
                 index2 += 3;
             }
             --index1;
         }
     }
 }
Esempio n. 2
0
        public void EndCollect()
        {
            if (this.PathGenerated != null && _psCollection.Count > 0)
            {
                PathGeometry pg = new PathGeometry();
                pg.FillRule = FillRule.Nonzero;

                PathFigureCollection figs = new PathFigureCollection();
                pg.Figures = figs;

                //닫힌 Path를 형성함
                PathSegmentCollection pscol2 = _psCollection.Clone();
                PathSegment           last   = pscol2.Last();
                pscol2.Insert(0, last);

                PathFigure fig = new PathFigure();
                fig.Segments = pscol2;
                fig.IsClosed = true;
                figs.Add(fig);

                this.PathGenerated(pg);
            }
        }