0

我正在努力弄清楚如何在打印时让 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();
4

1 回答 1

6

好的,所以我终于想出了如何完成我想做的事情。归结为我不了解如何将 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);

    }
于 2012-10-23T14:17:10.867 回答