Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }