3

私のアプリケーションでは、パネル内に囲まれたチャートがあります。ツールボックスからprintdocumentコンポーネントを追加し、チャートを印刷したいときにビットマップを作成し、ビットマップ内にパネルを取得します(結果として、パネル内にあるチャート)。私の問題は、ビットマップを作成するときに、それをプリンターに送信して印刷すると、チャートの一部が下と右側から食い尽くされることです。以下はこれを実行するための私のコードです

private void button1_Click(object sender, EventArgs e)
    {
        PrintDialog printDialog = new PrintDialog();
        printDialog.Document = printDocument1;
        printDialog.UseEXDialog = true;
        //Get the document

        if (DialogResult.OK == printDialog.ShowDialog())
        {
            printDocument1.DocumentName = "Test Page Print";
            printPreviewDialog1.Document = printDocument1;

            if (DialogResult.OK == printPreviewDialog1.ShowDialog())
            printDocument1.Print();
        }
    }

これは、print_document を初期化するためのボタンです。(いちいち印刷して紙とインクを消費しなくて済むように、印刷プレビューを追加しました)

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
    {
        Bitmap bm = new Bitmap(this.panel1.Width, this.panel1.Height);
        this.panel1.DrawToBitmap(bm, new Rectangle(50, 50, this.panel1.Width + 50, this.panel1.Height + 50));
        e.Graphics.DrawImage(bm, 0, 0);
    }

グラフが大きすぎてページに収まらないのではないかと思っていましたが、ビットマップを保存すると. ページ内に問題なく収まります。実際には、下部と右側に空きスペースが多すぎます。(ビットマップ関数への描画の後に追加

bm.Save(@"c:\LOAN_GRAPH.png");

描画画像の代わりに、画像はcに保存されます:)

私を助けることができる人なら誰でも本当に感謝しています。

4

1 に答える 1

1

その作業。パネルを削除し、代わりに、チャートに従って長方形を作成しています。

Bitmap bm = new Bitmap(this.chart1.Width, this.chart1.Height);
    this.chart1.DrawToBitmap(bm, new Rectangle(50, 50, this.chart1.Width + 50, this.chart1.Height + 50));
    e.Graphics.DrawImage(bm, 0, 0);
于 2012-05-26T05:34:01.493 に答える