【问题标题】:When I print bitmap, it eats up some of it当我打印位图时,它会吃掉一些
【发布时间】:2012-05-25 16:27:24
【问题描述】:

在我的应用程序中,我有一个图表,它被包围在一个面板内。我从工具箱中添加了一个 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中:)

任何可以帮助我的人都会非常感激。

【问题讨论】:

  • 如果生成的位图在保存到磁盘时看起来不错,您是否尝试过将该图像发送到打印机?对我来说,这听起来更像是打印过程调整图像以适应某些东西,然后裁剪图像的其余部分。
  • 如果你尝试这个重载呢? e.Graphics.DrawImage(bm, new Rectangle(Point.Empty, bm.Size), new Rectangle(Point.Empty, bm.Size), GraphicsUnit.Pixel);
  • 它的工作。我删除了面板,而是根据我的图表创建了矩形。位图 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);它的工作就像一个魅力

标签: c# bitmap printdocument printdialog


【解决方案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);

【讨论】:

    猜你喜欢
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 2017-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多