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