我正在尝试使用此代码打印图像。
private void Print()
{
PrintDocument printDocument = new PrintDocument();
printDocument.PrintPage += PrintDocument_PrintPage;
PrintPreviewDialog printDialog = new PrintPreviewDialog();
printDialog.Document = printDocument;
DialogResult result = printDialog.ShowDialog();
if (result == DialogResult.OK) printDocument.Print();
printDocument.PrintPage -= PrintDocument_PrintPage;
}
private void PrintDocument_PrintPage(object sender, PrintPageEventArgs e)
{
//e.Graphics.DrawImage(img, e.PageBounds.X, e.PageBounds.Y);
e.Graphics.DrawImage(img, e.PageBounds.X, e.PageBounds.Y,
e.PageBounds.Width, e.PageBounds.Height);
}
当图像很小时,它打印得很好,但是当它的高分辨率(我有 992*1403 的图像)时,它会以错误的尺寸绘制。
当我查看
PreviewDialog
或将其绘制到 pdf 文件时,它打印得很好,但是当我在打印机上打印时,它打印的尺寸错误。用这段代码解决了我的问题:
e.Graphics.DrawImage(img, 0, 0, e.PageSettings.PrintableArea.Width, e.PageSettings.PrintableArea.Height);
最佳答案
只是猜测,但是应用程序如何在不知道您正在打印的纸张类型的情况下知道 PageBounds
呢?
您是否尝试使用以下方法将纸张尺寸设置为特定尺寸:
printDocument .DefaultPageSettings.PaperSize =
new PaperSize("Custom", someWidth, someHeight);