2013-08-07 2 views
1

Я хочу распечатать изображение из файла, чтобы он идеально соответствовал странице.C#: Распечатать изображение из файла

Все, что мне удалось не закодировать до сих пор это:

private void button_print_Click(object sender, EventArgs e) 
    { 
     if (printDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
     { 
      printDocument1.PrinterSettings = printDialog1.PrinterSettings; 
      printDocument1.PrintPage += PrintPage; 
      printDocument1.Print();   
     } 
    } 

    private void PrintPage(object o, PrintPageEventArgs e) 
    { 
     System.Drawing.Image img = imgOriginal; 
     Point loc = new Point(0, 24); 
     e.Graphics.DrawImage(img, loc); 

    } 

Проблема здесь в том, что изображение является большим, чтобы идеально соответствовать к странице. Что я могу сделать? Все темы, которые я нашел с Google, не так многообещающие.

Любые идеи?

Заранее спасибо

Marco Frost

+0

Итак, вы хотите, чтобы изменить размер изображения до размера выбранной бумаги в принтер по умолчанию? Вы хотите разорвать соотношение сторон? –

+0

Да. Я хочу изменить его размер. Но я хочу сохранить соотношение сторон. –

+0

Не могли бы вы попробовать что-то вроде этого: img.Width = pageSetupDialog.Document.DefaultPageSettings.PaperSize.Width; –

ответ

1
private void PrintPage(object o, PrintPageEventArgs e) 
{ 
    string filepath = "D:\\patient images\\" + txtPatCode.Text + "\\" + lstImages.SelectedItems[0].Text; 
    System.Drawing.Image img = Image.FromFile(filepath); 
    ResizeImage(img, 200); 
    Point loc = new Point(200, 200); 
    e.Graphics.DrawImage(img, loc);   
} 

public static Image ResizeImage(Image img, int minsize) 
{ 
    var size = img.Size; 
    if (size.Width >= size.Height) 
    { 
    // Could be: if (size.Height < minsize) size.Height = minsize; 
    size.Height = minsize; 
    size.Width = (size.Height * img.Width + img.Height - 1)/img.Height; 
    } 
    else 
    { 
    size.Width = minsize; 
    size.Height = (size.Width * img.Height + img.Width - 1)/img.Width; 
    } 
    return new Bitmap(img, size); 
} 
+2

Вы должны указать этот ответ [Изменение размера изображений на C#] (http://stackoverflow.com/a/15998683/719186), так как ваша функция ResizeImage, похоже, будет скопирована с нее. – LarsTech

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