作为我的应用程序的打印过程的一部分,我正在尝试打印缩小到指定宽度的图像列表,并将其放在另一个下面。问题是我无法弄清楚如何将图像的像素高度转换为打印期间图形对象使用的单位的高度。如何正确计算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;
答案 0 :(得分:5)
我在解析文档后找到了正确的解决方案。
这一行:
float imageHeightPrint = e.Graphics.DpiY * imageToPrint.Height / imageToPrint.VerticalResolution;
应改为:
float imageHeightPrint = imageToPrint.Height /
imageToPrint.VerticalResolution * 100;
我错过的最重要的事情是印刷高度应该是百分之一英寸。