Page 1 of 1
Print multiple charts in either single or multiple pages
Posted: Thu Feb 18, 2010 12:06 pm
by 9641714
I am using TeeChart in my asp.net application. I am new to TeeChart and facing an issue as below.
I want to print multiple charts either in single page or in multiple pages. Decision should be taken from print preview window taking care of selected paper size, orientation etc. I have tried by sending multiple charts to print preview. But if I select smaller paper size or zoom up the chart, there is a cut off. It always prints a single page. How do I ensure if all charts are not fit to single page but rather should be printed on multiple pages.
Re: Print multiple charts in either single or multiple pages
Posted: Thu Feb 18, 2010 2:20 pm
by yeray
Hi Beige,
I think you should do something similar as what Narcís suggested
here
Re: Print multiple charts in either single or multiple pages
Posted: Fri Feb 19, 2010 9:59 am
by 9641714
thanks for reply. Good suggestion by Narcís. but it does not suggest any print preview. And one more point, how do I draw multiple chart in a single PrintPageEventArgs? Again System.Drawing.Printing.PrintDocument document.print(), prints whole document in a single page. How to print multiple page?
Re: Print multiple charts in either single or multiple pages
Posted: Fri Feb 19, 2010 3:34 pm
by yeray
Hi Biege,
Take a look at this example. I think it should be a good start point to achieve what you are trying to do:
Code: Select all
public Form1()
{
InitializeComponent();
InitializeChart();
}
private PrintPreviewDialog printPreviewDialog1 = new PrintPreviewDialog();
private System.Drawing.Printing.PrintDocument printDocument1 = new System.Drawing.Printing.PrintDocument();
private Steema.TeeChart.TChart[] Charts;
private void InitializeChart()
{
Charts = new Steema.TeeChart.TChart[5];
for (int i = 0; i < Charts.Length; i++)
{
Charts[i] = new Steema.TeeChart.TChart();
Charts[i].Parent = this;
Charts[i].Top = 100;
Charts[i].Left = i*Charts[0].Width;
switch (i)
{
case 0: new Steema.TeeChart.Styles.Line(Charts[i].Chart);
break;
case 1: new Steema.TeeChart.Styles.Bar(Charts[i].Chart);
break;
case 2: new Steema.TeeChart.Styles.Pie(Charts[i].Chart);
break;
default: new Steema.TeeChart.Styles.Points(Charts[i].Chart);
break;
}
Charts[i][0].FillSampleValues();
}
printDocument1.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(printDocument1_PrintPage);
}
private void button1_Click(object sender, EventArgs e)
{
printPreviewDialog1.Document = printDocument1;
printPreviewDialog1.ShowDialog();
}
void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Rectangle r;
System.Drawing.Imaging.Metafile m;
for (int i = 0; i < Charts.Length; i++)
{
r = new Rectangle(10, 10 + i*200, 700, 200);
m = Charts[i].Chart.Metafile(Charts[i].Chart, r.Width, r.Height);
e.Graphics.DrawImage(m, r, Charts[i].Chart.ChartBounds, GraphicsUnit.Pixel);
}
}
Re: Print multiple charts in either single or multiple pages
Posted: Mon Feb 22, 2010 2:32 pm
by 9641714
Yes Biege, this works ok for windows form application. I need similar functionality for my asp.net web application. Is it possible to show windows forms in asp.net?
Re: Print multiple charts in either single or multiple pages
Posted: Tue Feb 23, 2010 1:06 pm
by 10050769
Hello Beige,
I made a simple example using last of TeeChart.Net (version 4) and similar code of Yeray’s posted in previously. Please check next code works as you want.
Code: Select all
protected void Page_Load(object sender, EventArgs e)
{
InitializeChart();
}
private System.Windows.Forms.PrintPreviewDialog printPreviewDialog1 = new System.Windows.Forms.PrintPreviewDialog();
private System.Drawing.Printing.PrintDocument printDocument1 = new System.Drawing.Printing.PrintDocument();
private void InitializeChart()
{
Steema.TeeChart.Styles.Line line1 = new Steema.TeeChart.Styles.Line(WebChart1.Chart);
Steema.TeeChart.Styles.Bar bar1= new Steema.TeeChart.Styles.Bar(WebChart2.Chart);
Steema.TeeChart.Styles.Pie pie1 = new Steema.TeeChart.Styles.Pie(WebChart3.Chart);
Steema.TeeChart.Styles.Points points1 = new Steema.TeeChart.Styles.Points(WebChart4.Chart);
line1.FillSampleValues();
bar1.FillSampleValues();
pie1.FillSampleValues();
points1.FillSampleValues();
printDocument1.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(printDocument1_PrintPage);
}
void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
System.Drawing.Rectangle r1,r2,r3,r4;
System.Drawing.Imaging.Metafile m1,m2,m3,m4;
//WebChart1
r1 = new System.Drawing.Rectangle(10, 10 + 1 * 200, 700, 200);
m1 = WebChart3.Chart.Metafile(WebChart1.Chart, r1.Width, r1.Height);
e.Graphics.DrawImage(m1, r1, WebChart1.Chart.Chart.ChartBounds, System.Drawing.GraphicsUnit.Pixel);
//WebChart2
r2 = new System.Drawing.Rectangle(10, 10 + 2 * 200, 700, 200);
m2 = WebChart2.Chart.Metafile(WebChart2.Chart, r2.Width, r2.Height);
e.Graphics.DrawImage(m2, r2, WebChart2.Chart.Chart.ChartBounds, System.Drawing.GraphicsUnit.Pixel);
//WebChart3
r3 = new System.Drawing.Rectangle(10, 10 + 3* 200, 700, 200);
m3 = WebChart3.Chart.Metafile(WebChart3.Chart, r3.Width, r3.Height);
e.Graphics.DrawImage(m3, r3, WebChart3.Chart.Chart.ChartBounds, System.Drawing.GraphicsUnit.Pixel);
//WebChart4
r4= new System.Drawing.Rectangle(10, 10 + 4 * 200, 700, 200);
m4 = WebChart3.Chart.Metafile(WebChart4.Chart, r4.Width, r4.Height);
e.Graphics.DrawImage(m4, r4, WebChart4.Chart.Chart.ChartBounds, System.Drawing.GraphicsUnit.Pixel);
}
protected void Button1_Click(object sender, EventArgs e)
{
printPreviewDialog1.Document = printDocument1;
printPreviewDialog1.ShowDialog();
}
I hope will helps.
Thanks,