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