作为我的应用程序打印过程的一部分,我正在尝试打印一系列图像,这些图像按比例缩小到指定的宽度,并且一个放在另一个下面。问题是我不知道如何在打印过程中将图像像素的高度转换为图形对象使用的单位的高度。如何正确计算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;

最佳答案

剖析文档后,我自己找到了正确的解决方案。

这行:

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


应更改为:

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


我最想念的是,印刷高度应为百分之一英寸。

10-04 17:30