【问题标题】:Print image in .Net winform在 .Net winform 中打印图像
【发布时间】:2010-02-25 20:11:59
【问题描述】:

我试图让我的用户在我们的 WinForm 程序中打印他们所在的当前页面。首先,我截取应用程序的屏幕截图并将其保存到磁盘。然后我启动一个PrintPreviewDialog 并将其加载到那里。

这一切都有效,除了它离开页面的事实!我不知道如何更改或允许用户将打印的页面布局更改为 landscaped 和/或将屏幕截图“auto fit”更改为 1 页。

private void printDetailsToolStripMenuItem_Click(object sender, EventArgs e)
{
     HUD.ShellForm.SaveAsImage("CaseNoteDetails.jpg", ImageFormat.Jpeg);

    printPreviewDialog1.PrintPreviewControl.AutoZoom = true;
    printPreviewDialog1.Document = printDocument1;
    printPreviewDialog1.AutoSize = true;
    printPreviewDialog1.ShowDialog();
}

void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
{
    float x = e.MarginBounds.Left;
    float y = e.MarginBounds.Top;

    e.Graphics.DrawImage(Image.FromFile("c:\\CaseNoteDetails.jpg"), x, y);
}

我把一行改成了这个 -->

e.Graphics.DrawImage(Image.FromFile("c:\\CaseNoteDetails.jpg"), x, y,1000,750);

除了我有将近 1/3 的打印页面作为空白区域之外,这很有效。如何最小化 Padding/Margins 以便可以使用整个页面?

【问题讨论】:

标签: c# .net winforms printing


【解决方案1】:

PrintDocument 的默认缩放比例为 1 像素 = 0.01 英寸。一张典型的纸大约是 7.5 英寸宽(可用空间),一张 750 像素宽的图像将完全填满它。你的屏幕肯定比这更宽。

请改用 Graphics.DrawImage(Image, Rectangle) 重载,这样您就可以重新缩放图像以使其足够宽。 PageSettings.Landscape 允许您旋转它。

【讨论】:

  • ?我会尝试一下,但要清楚一点,图像太大,因此在打印机预览中的页面边缘被切掉,最终打印页面。
  • 不,你的图片不是太大。任何屏幕截图都无法填满打印页面,打印机具有非常高的分辨率。你只需要把它画得更小。这也会让它看起来更好,你现在得到的胖像素不是那么漂亮。
  • 我现在调整了图像的大小,我需要最小化打印页面上的填充,因为我的图像从它的 1/3 处开始。
  • 调整你传递给 DrawImage() 的矩形
【解决方案2】:

获得土地

  printDocument1.DefaultPageSettings.Landscape = true

为了调整大小,您是否尝试过 Image.GetThumbnailImage。它看起来是一个可以调整图像大小以使其适合的功能

另外,看看这些例子

http://geekswithblogs.net/kakaiya/archive/2005/06/09/42656.aspx

http://www.devx.com/dotnet/Article/22079

【讨论】:

  • 横向部分效果很好。我会尝试其他部分,尽管即使在横向上它也有点太宽了。
【解决方案3】:

打印文档的边距和边距在 printDocument1.DefaultPageSettings 值中控制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-10
    • 1970-01-01
    • 1970-01-01
    • 2012-01-14
    • 2022-01-21
    • 2012-09-12
    • 2011-07-17
    • 1970-01-01
    相关资源
    最近更新 更多