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; } } }
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); } }