2009-04-28 1 views
0

Как часть процедуры печати моего приложения, я пытаюсь напечатать список изображений, уменьшенных до указанной ширины и расположенных один под другим. Проблема в том, что я не могу понять, как преобразовать высоту в пикселях изображений в высоту в единицах, используемых графическим объектом во время печати. Как правильно вычислить переменную imageHeightPrint?Преобразование высоты пикселя изображения в размер печати, используемого графическим объектом

Этот фрагмент кода является частью цикла печати изображений, который масштабирует изображение и вычисляет его высоту и место размещения следующего изображения.

Image image = Image.FromStream(imageStream); 

// Get proportional correct height 
int imageHeight = image.Height * imageWidth/image.Width; 

Image imageToPrint = image.GetThumbnailImage(imageWidth, imageHeight, null, IntPtr.Zero); 

float imageHeightPrint = e.Graphics.DpiY * imageToPrint.Height/imageToPrint.VerticalResolution; 

e.Graphics.DrawImage(imageToPrint, e.MarginBounds.Left, yPos); 

yPos += imageHeightPrint; 

ответ

4

Я нашел правильное решение самостоятельно после разборки документации.

Эта линия:

float imageHeightPrint = e.Graphics.DpiY * imageToPrint.Height/imageToPrint.VerticalResolution; 

Должен быть изменен в этом:

float imageHeightPrint = imageToPrint.Height/
         imageToPrint.VerticalResolution * 100; 

Самая большая вещь, которую я пропустил, что высота-в печати должны быть в сотых долях дюйма.