我正在努力弄清楚如何在打印时让MSChart填满整个页面。有人可以告诉我为什么下面的代码不起作用和/或建议另一种方法。我为自己的无知道歉,但到目前为止我所做的所有打印都是通过Crystal和其他报告框架完成的,因此我通常不必直接使用PrintDialog和PrintPreviewDialog。提前谢谢。
// Printing Code
Size pageSize = new Size(this.Chart.Printing.PrintDocument.DefaultPageSettings.PaperSize.Width, this.Chart.Printing.PrintDocument.DefaultPageSettings.PaperSize.Height);
this.Chart.Size = pageSize;
// This properly previews my chart but, it does not fill up the page
this.Chart.Printing.PrintPreview();
答案 0 :(得分:3)
好的,所以我终于想出了如何完成我想要做的事情。归结起来,我不了解如何将PrintDocument与Graphics对象一起使用。我用来完成任务的代码如下。我真的希望这有助于某人。此外,我强烈推荐MSFT图表示例代码。事实证明,在创建这些图表时,这对我来说非常宝贵。链接是:http://archive.msdn.microsoft.com/mschart/Release/ProjectReleases.aspx?ReleaseId=4418
public void PrintPreviewIncompleteJobsByStatus()
{
// Set new print document with custom page printing event handler
chart.Printing.PrintDocument = new PrintDocument();
chart.Printing.PrintDocument.PrintPage += new PrintPageEventHandler(ChartGenericFormat_PrintPage);
chart.Printing.PrintDocument.DefaultPageSettings.Landscape = true;
// Print preview chart
chart.Printing.PrintPreview();
}
private void ChartGenericFormat_PrintPage(object sender, PrintPageEventArgs ev)
{
// Calculate first chart position rectangle
Rectangle chartPosition = new Rectangle(ev.MarginBounds.X, ev.MarginBounds.Y, ev.MarginBounds.Width, ev.MarginBounds.Height);
// Draw chart on the printer graphics
chart.Printing.PrintPaint(ev.Graphics, chartPosition);
}