0

I am struggling to figure out how to get an MSChart to fill the entire page when printing. Can someone tell me why the code below does not work and/or suggest another approach. I apologize for my ignorance but, all of the printing I have done so far has been done through Crystal and other reporting frameworks so I generally never have to work directly with the PrintDialog and PrintPreviewDialog. Thanks in advance.

// 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

さて、私はついに自分がやろうとしていたことを達成する方法を見つけました. Graphics オブジェクトで PrintDocument を使用する方法を理解していないことがわかりました。タスクを達成するために使用したコードは以下のとおりです。これが誰かに役立つことを本当に願っています。また、MSFT Chart Sample Code を強くお勧めします。これらのチャートを作成するとき、それは私にとってかけがえのないものであることが証明されています. リンクは次のとおりです。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 に答える