以.Net winform打印图像

时间:2010-02-25 20:11:59

标签: c# .net winforms printing

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

这一切都有效,除了它离开页面的事实!我无法弄清楚如何更改或允许用户将用于打印的页面布局更改为美化和/或“自动适合”屏幕截图为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的打印页面作为空白。如何最小化填充/边距以便我可以使用整个页面?

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

获得土地空间

  printDocument1.DefaultPageSettings.Landscape = true

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

另外,请看一下这些例子

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

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

答案 2 :(得分:0)

打印文档的填充和边距由printDocument1.DefaultPageSettings值控制。