Преобразовать высоту пикселя изображения в размер печати, используемый графическим объектом - PullRequest
1 голос
/ 28 апреля 2009

В рамках процедуры печати моего приложения я пытаюсь распечатать список изображений, уменьшенных до указанной ширины и размещенных одно под другим. Проблема в том, что я не могу понять, как преобразовать высоту в пикселях изображений в высоту в единицах, используемых графическим объектом во время печати. Как правильно рассчитать переменную 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;

1 Ответ

5 голосов
/ 28 апреля 2009

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

Эта строка:

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...