private IList <float[]> ArcToLines(PathItem item) { IList <float> numbers = item.Coordinates; EllipseArc ellipse = EllipseArc.CreateEllipseArc(numbers[7], numbers[8], numbers[5], numbers[6], numbers[0], numbers[1], numbers[4], numbers[3]); IList <float[]> newCoordinates = PdfContentByte.BezierArc(ellipse.Cx - numbers[0], ellipse.Cy - numbers[1], ellipse.Cx + numbers[0], ellipse.Cy + numbers[1], ellipse.StartAng, ellipse.Extend); IList <float[]> result = new List <float[]>(); if (newCoordinates.Count == 0) { return(result); } float[] pt = newCoordinates[0]; float x0 = pt[0]; float y0 = pt[1]; for (int k = 0; k < newCoordinates.Count; ++k) { pt = newCoordinates[k]; foreach (float[] point in BezierCurveToLines(x0, y0, pt[2], pt[3], pt[4], pt[5], pt[6], pt[7], true)) { result.Add(point); } x0 = pt[6]; y0 = pt[7]; } return(result); }
private void DrawArc(PdfContentByte cb, IList <float> numbers) { EllipseArc ellipse = EllipseArc.CreateEllipseArc(numbers[7], numbers[8], numbers[5], numbers[6], numbers[0], numbers[1], numbers[4], numbers[3]); cb.SetColorFill(BaseColor.ORANGE); cb.Rectangle(numbers[7], numbers[8], 2, 2); //p1 cb.Fill(); cb.SetColorFill(BaseColor.GREEN); cb.Rectangle(numbers[5], numbers[6], 2, 2); //p2 cb.Fill(); cb.Arc(ellipse.Cx - numbers[0], ellipse.Cy - numbers[1], ellipse.Cx + numbers[0], ellipse.Cy + numbers[1], ellipse.StartAng, ellipse.Extend); }