2013-03-11 2 views
4

Я пытаюсь распечатать изображение с помощью этого кода.Печать масштабированного изображения C#

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); 
    } 

Когда изображение мало она печатает отлично, но когда его привет-Rez (у меня есть изображение 992 * 1403) он рисует с неправильным размером. Когда я просматриваю PreviewDialog или рисую его на pdf file, он печатает отлично, но когда я печатаю его на принтере, он печатает неправильные размеры.

Исправлена ​​моя проблема с этим кодом:

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

ответ

0

Просто догадаться, но как приложение будет знать PageBounds, не зная, на какой бумаге вы печатаете?

Вы пробовали настройки размер бумаги определенного размера, используя что-то вроде этого:

printDocument .DefaultPageSettings.PaperSize = 
       new PaperSize("Custom", someWidth, someHeight);