2016-10-26 4 views
1

Я создал приложение, которое позволяет пользователям печатать несколько файлов jpg. Так что я отправить мой запрос на печать непосредственно, как это:PrintDocument просто печатает часть моего файла JPG

if (existfile == true) 
       { 
        PrinterSettings a=new PrinterSettings(); 
        PrintDocument pd = new PrintDocument(); 
        IEnumerable<PaperSize> size = a.PaperSizes.Cast<PaperSize>(); 
        PaperSize a4 = size.First<PaperSize>(i => i.Kind == PaperKind.A4); 
        pd.DefaultPageSettings.Landscape = true; 
        pd.DefaultPageSettings.PaperSize = a4; 
        pd.PrintPage += PrintPage; 
        pd.Print(); 
       } 

И функция печати:

private void PrintPage(object o, PrintPageEventArgs e) 
     { 
      System.Drawing.Image img = System.Drawing.Image.FromFile(CurrentAddress); 
      Point loc = new Point(100, 100); 
      e.Graphics.DrawImage(img, loc); 
     } 

Но этот код просто печатает некоторую часть моего образа, не все это .Я хочу напечатать их scale to fit. Как я могу это сделать?

+0

-Использовать перегрузки DrawImage, который имеет два прямоугольника. Один для источника и другой для пункта назначения. Последний может использоваться для масштабирования изображения. – TaW

+0

Точка loc = новая точка (0, 0); –

+0

@TaW не могли бы вы дать мне более подробную информацию? –

ответ

1

Это может решить проблему.

e.Graphics.DrawImage(img, e.MarginBounds); 

или

e.Graphics.DrawImage(img, e.PageBounds); 

или

ev.Graphics.DrawImage(Image.FromFile("C:\\My Folder\\MyFile.bmp"), ev.Graphics.VisibleClipBounds); 
+0

Позвольте мне проверить это –

+0

Это работает, но только одна проблема о 2 или 3 см моей фотографии внизу отсутствует –

+0

Я использую этот: e.Graphics.DrawImage (img, e.PageBounds); –

Смежные вопросы