4

このコードで画像を印刷しようとしています。

   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 の画像がある) の場合は間違ったサイズで描画されます。PDFファイルを表示PreviewDialogまたは描画すると正常に印刷されますが、プリンターで印刷すると間違ったサイズで印刷されます。

このコードで私の問題を修正しました:

e.Graphics.DrawImage(img, 0, 0, e.PageSettings.PrintableArea.Width, e.PageSettings.PrintableArea.Height);

4

1 に答える 1

0

推測ですが、PageBounds印刷している用紙の種類を知らずに、アプリケーションはどのようにして を認識するのでしょうか?

次のようなものを使用して、用紙サイズを特定のサイズに設定しようとしましたか:

printDocument .DefaultPageSettings.PaperSize = 
                new PaperSize("Custom", someWidth, someHeight);
于 2013-03-11T10:41:57.060 に答える