Ejemplo n.º 1
0
        private void btnPrint_Click(object sender, System.EventArgs e)
        {
            ChartPrinter chartPrinter = new ChartPrinter(BaseSample.FlexChart, true);

            if (BaseSample.pageSets == null)
            {
                BaseSample.pageSets = new PageSettings()
                {
                    Landscape = true
                }
            }
            ;

            chartPrinter.PageSettingsProp = BaseSample.pageSets;

            if (BaseSample.prnSets != null)
            {
                chartPrinter.PrintSettingsProp = BaseSample.prnSets;
            }

            ChartPrinter.PrintScale pscale =
                (ChartPrinter.PrintScale)Enum.Parse(typeof(ChartPrinter.PrintScale), comboPrintScale.SelectedItem as string);
            chartPrinter.UseGrayScale = chkGrayScale.Checked;
            bool usePrintPreview = chkPreview.Checked;
            bool printAsBitmap   = false;

            chartPrinter.PrintCtrl(pscale, DrawingRectangle, BaseSample.pageSets, printAsBitmap, usePrintPreview);
        }
Ejemplo n.º 2
0
        private void _bPageSetup_Click(object sender, EventArgs e)
        {
            ChartPrinter chartPrinter = new ChartPrinter(flexChart1, false);

            chartPrinter.PageSetup();
            _singlePagePrintControl.PageSets = chartPrinter.PageSettingsProp;
        }
Ejemplo n.º 3
0
        private void printToolStripMenuItem_Click(object sender, EventArgs e)
        {
            selectedEntity?.ClearHighLight();
            var chartPrinter = new ChartPrinter();

            chartPrinter.NotifyIcon = notifyIcon;
            using (var headerFont = new Font("Arial", 12))
            {
                chartPrinter.PrintChart(myChart, headerFont);
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Link l = new Link(new PrintingSystem());

            l.Landscape = true;
            l.PaperKind = System.Drawing.Printing.PaperKind.A3;
            cp          = new ChartPrinter(this.chartControl1);
            cp.Initialize(l.PrintingSystem, l);
            cp.SizeMode         = PrintSizeMode.Stretch;
            l.CreateDetailArea += new CreateAreaEventHandler(l_CreateDetailArea);
            l.ShowPreviewDialog();
            cp.Release();
        }
        private void btnPrinterSetup_Click(object sender, EventArgs e)
        {
            ChartPrinter chartPrinter = new ChartPrinter(flexChart1, false);

            if (prnSets != null)
            {
                chartPrinter.PrintSettingsProp = prnSets;
            }

            chartPrinter.PrintSetup();

            prnSets = chartPrinter.PrintSettingsProp;
        }
        private void MultiChartPageClick(bool singlePage)
        {
            InitializePageSettings();

            PrintDocument pd = new PrintDocument();

            pd.DefaultPageSettings = BaseSample.pageSets;

            if (BaseSample.prnSets != null)
            {
                pd.PrinterSettings = BaseSample.prnSets;
            }

            int pageNumber = 0;

            pd.PrintPage += (pageSender, printPageEventArgs) =>
            {
                FlexChart flexChart = BaseSample.FlexChart;

                // Each chart or page could use a different FlexChart instance, but for simplicity
                // of the sample, a single FlexChart instance is used with minor changes to differentiate them.
                ChartPrinter chartPrinter = new ChartPrinter(flexChart, true);

                // Save changes to the FlexChart instance so they can be restored later.
                Color  originalBackgroundColor = flexChart.BackColor;
                string title = flexChart.Header.Content;

                pageNumber++;

                // the chart is drawn within the rectangle assuming coordinates relative
                // to the Top-Left page margin as specifiec in the prinPageEventArgs.
                Rectangle rect = singlePage ? new Rectangle(0, 100, 400, 200) : Rectangle.Empty;

                printPageEventArgs.HasMorePages = pageNumber < 4;       // sanity check to avoid endless loop.

                // Print the chart 4 times with different modified charts.
                if (singlePage || (!singlePage && pageNumber == 1))
                {
                    flexChart.BackColor      = Color.Yellow;
                    flexChart.Header.Content = "Fit With Yellow Background";
                    chartPrinter.PrinterCtrlToPage(pd, printPageEventArgs, ChartPrinter.PrintScale.Fit, rect, false);
                    drawMarginedRectangle(printPageEventArgs.Graphics, rect, printPageEventArgs.MarginBounds);
                }

                // same chart with GrayScale next to it.
                if (singlePage || (!singlePage && pageNumber == 2))
                {
                    if (singlePage)
                    {
                        rect.X += rect.Width + 50;
                    }
                    flexChart.Header.Content = "Fit With Yellow Background in GrayScale";
                    chartPrinter.PrinterCtrlToPage(pd, printPageEventArgs, ChartPrinter.PrintScale.Fit, rect, true);
                    drawMarginedRectangle(printPageEventArgs.Graphics, rect, printPageEventArgs.MarginBounds);
                }

                if (singlePage || (!singlePage && pageNumber == 3))
                {
                    if (singlePage)
                    {
                        rect.X -= rect.Width + 50; rect.Y += rect.Height + 50;
                    }
                    flexChart.BackColor      = Color.Green;
                    flexChart.Header.Content = "Zoomed With Green Background";
                    chartPrinter.PrinterCtrlToPage(pd, printPageEventArgs, ChartPrinter.PrintScale.Zoom, rect, false);
                    drawMarginedRectangle(printPageEventArgs.Graphics, rect, printPageEventArgs.MarginBounds);
                }


                if (singlePage || (!singlePage && pageNumber == 4))
                {
                    if (singlePage)
                    {
                        rect.X += rect.Width + 50;
                    }
                    flexChart.BackColor      = Color.MistyRose;
                    flexChart.Header.Content = "Stretched With Rose Background";
                    chartPrinter.PrinterCtrlToPage(pd, printPageEventArgs, ChartPrinter.PrintScale.Stretch, rect, false);
                    drawMarginedRectangle(printPageEventArgs.Graphics, rect, printPageEventArgs.MarginBounds);
                    printPageEventArgs.HasMorePages = false;
                    pageNumber = 0;     // zero for the next print from preview dialog.
                }

                // restore modified chart setting to original values.
                flexChart.Header.Content = title;
                flexChart.BackColor      = originalBackgroundColor;
            };

            ChartPrinter.ChartPreviewDialogEx(pd, BaseSample.prnSets == null);

            pd.Dispose();
        }
        private void btnStripChart_Click(object sender, EventArgs e)
        {
            InitializePageSettings();

            FlexChart       flexChart = BaseSample.FlexChart;
            PageSettings    pageSets  = BaseSample.pageSets;
            PrinterSettings prnSets   = BaseSample.prnSets;

            PrintDocument pd = new PrintDocument();

            pd.DefaultPageSettings = pageSets;
            pd.PrinterSettings     = prnSets;

            int pageNumber = 0;

            // determine the limits over which the chart should be printed.
            int pageCount = 8;

            int pageWidth  = pageSets.Bounds.Width - pageSets.Margins.Left - pageSets.Margins.Right;
            int pageHeight = pageSets.Bounds.Height - pageSets.Margins.Top - pageSets.Margins.Bottom;

            int bitMapWidth  = pageCount * pageWidth;
            int bitMapHeight = pageHeight;

            // save the current axis limits and units
            double minFlex  = flexChart.AxisX.Min;
            double maxFlex  = flexChart.AxisX.Max;
            double minFlexY = flexChart.AxisY.Min;
            double maxFlexY = flexChart.AxisY.Max;
            double xunit    = flexChart.AxisX.MajorUnit;

            // set the axis limits and units for bitmap creation
            flexChart.AxisX.Min            = 0;
            flexChart.AxisX.Max            = BaseSample.maximumXValue;
            flexChart.AxisY.Min            = flexChart.AxisY.ActualMin;
            flexChart.AxisY.Max            = flexChart.AxisY.ActualMax;
            flexChart.AxisX.MajorUnit      = 1;
            flexChart.AxisX.MinorTickMarks = C1.Chart.TickMark.Outside;

            // draw the print version of the chart to a bitmap.
            Bitmap bitmap = new Bitmap(bitMapWidth, bitMapHeight);

            using (Graphics g = Graphics.FromImage(bitmap))
            {
                flexChart.DrawChart(g, new Size(bitMapWidth, bitMapHeight));
            }

            // restore the axis limits and units
            flexChart.AxisX.Max            = maxFlex;
            flexChart.AxisX.Min            = minFlex;
            flexChart.AxisY.Max            = maxFlexY;
            flexChart.AxisY.Min            = minFlexY;
            flexChart.AxisX.MajorUnit      = xunit;
            flexChart.AxisX.MinorTickMarks = C1.Chart.TickMark.None;
            flexChart.Refresh();

            int increment  = bitMapWidth / pageCount;
            int bitmapLeft = 0;

            // print initialization
            pd.BeginPrint += (pageSender, beginPrintEventArgs) =>
            {
                pageNumber = 0;
                bitmapLeft = 0;
            };

            pd.PrintPage += (pageSender, printPageEventArgs) =>
            {
                pageNumber++;

                Graphics g = printPageEventArgs.Graphics;
                g.DrawImage(bitmap,
                            new Rectangle(pageSets.Margins.Left, pageSets.Margins.Top, increment, bitMapHeight),
                            new Rectangle(bitmapLeft, 0, increment, bitMapHeight),
                            GraphicsUnit.Pixel);

                bitmapLeft += increment;

                bool morepages = pageNumber < 8;
                printPageEventArgs.HasMorePages = morepages;
            };

            pd.EndPrint += (pageSender, endPrintEventArgs) =>
            {
                pageNumber = 0;
                bitmapLeft = 0;
            };

            ChartPrinter.ChartPreviewDialogEx(pd, true);
            pd.Dispose();
        }
        private void btnSubCharts_Click(object sender, EventArgs e)
        {
            FlexChart flexChart = BaseSample.FlexChart;

            InitializePageSettings();

            PrintDocument pd = new PrintDocument();

            pd.DefaultPageSettings = BaseSample.pageSets;
            pd.PrinterSettings     = BaseSample.prnSets;

            int pageNumber = 0;

            // determine the limits over which the chart should be printed.
            int    pageCount = 8;
            double minXValue = 0;
            double maxXValue = BaseSample.maximumXValue;

            double increment = (maxXValue - minXValue) / pageCount;

            double minFlex = double.NaN, maxFlex = double.NaN;
            double minFlexY = double.NaN, maxFlexY = double.NaN;

            pd.BeginPrint += (pageSender, beginPrintEventArgs) =>
            {
                // save the current axis limits
                minFlex  = flexChart.AxisX.Min;
                maxFlex  = flexChart.AxisX.Max;
                minFlexY = flexChart.AxisY.Min;
                maxFlexY = flexChart.AxisY.Max;

                flexChart.AxisX.Min = minXValue;
                flexChart.AxisX.Max = increment;
                flexChart.AxisY.Min = flexChart.AxisY.ActualMin;
                flexChart.AxisY.Max = flexChart.AxisY.ActualMax;

                pageNumber = 0;
            };


            pd.PrintPage += (pageSender, printPageEventArgs) =>
            {
                // Each chart or page could use a different FlexChart instance, but in this case
                // subsets of a single FlexChart instance is used.
                ChartPrinter chartPrinter = new ChartPrinter(flexChart, true);
                pageNumber++;

                // The chart is drawn within the rectangle assuming coordinates relative
                // to the Top-Left page margin as specifiec in the prinPageEventArgs.
                // An empty rectangle indicates a full page rather than a limited
                // rectangle on the page.
                Rectangle rect = new Rectangle(0, 0, 0, 0);

                printPageEventArgs.HasMorePages = pageNumber < 30;       // sanity check to avoid endless loop.
                chartPrinter.PrinterCtrlToPage(pd, printPageEventArgs, ChartPrinter.PrintScale.Fit, rect, false);

                bool morePages = flexChart.AxisX.Max < maxXValue;
                printPageEventArgs.HasMorePages = morePages;

                if (morePages)
                {
                    // set up for the next page.
                    flexChart.AxisX.Min += increment;
                    flexChart.AxisX.Max += increment;
                }
            };

            pd.EndPrint += (pageSender, endPrintEventArgs) =>
            {
                // restore the axis limits
                flexChart.AxisX.Max = maxFlex;
                flexChart.AxisX.Min = minFlex;
                flexChart.AxisY.Max = maxFlexY;
                flexChart.AxisY.Min = minFlexY;

                // reset for next print from preview dialog.
                pageNumber = 0;
            };

            ChartPrinter.ChartPreviewDialogEx(pd, true);
            pd.Dispose();
        }