Exemplo n.º 1
0
        void ExportPage(PdfDocument doc, ChartPage chart)
        {
            // Create an empty page
            var page = doc.AddPage();

            if (ExportOptions.Orientation == PageOrientation.Landscape)
            {
                page.Orientation = PdfSharp.PageOrientation.Landscape;
            }

            // Get an XGraphics object for drawing
            var graphics = XGraphics.FromPdfPage(page);

            //
            if (ExportOptions.WithBackground && !chart.BackColor.IsEmpty)
            {
                graphics.Clear(chart.BackColor);
            }

            //
            var contentSize = chart.GetContentSize();

            var pageSize   = new Size((int)page.Width.Point, (int)page.Height.Point);
            var zoom       = PaintHelper.GetZoom(contentSize, pageSize);
            var zoomedSize = PaintHelper.Zoom(contentSize, zoom);

            if (zoomedSize.Width < pageSize.Width || zoomedSize.Height < pageSize.Height)
            {
                graphics.TranslateTransform(
                    Math.Max(0, (pageSize.Width - zoomedSize.Width) / 2),
                    Math.Max(0, (pageSize.Height - zoomedSize.Height) / 2));
            }
            graphics.ScaleTransform(zoom);

            //
            if (chart is MindMap)
            {
                var grf      = new PdfGraphics(graphics);
                var args     = new RenderArgs(grf, (MindMap)chart, grf.Font(ChartBox.DefaultChartFont));
                var renderer = new GeneralRender();
                renderer.Paint((MindMap)chart, args);
            }
        }