关于
我正在使用WinForms。在我的表格中,我有一个打开和打印按钮。 “打开”按钮可将tif图像打开到图片框中。打印按钮从图片框中打印这些图片。我使用大图像文档,例如宽度和长度:(3000,3600)。因此,我将这些tif图像文档缩放到适合常规打印纸张尺寸(8.5 x 11)。我这样做的原因是使用下面的方法,tif图像上的字母不会模糊。
问题
好消息是它很好地缩放意味着它不模糊。坏消息是它缩小了很多。见图A.2
测试
测试i增加和减少* 100奇怪的是它不会增加尺寸但是它会减小尺寸
float newWidth = i.Width * 100 / i.HorizontalResolution; float newHeight = i.Height * 100 / i.VerticalResolution;
代码
private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
{ //pageViewer = picturebox
Image i = pageViewer.Image;
float newWidth = i.Width * 100 / i.HorizontalResolution;
float newHeight = i.Height * 100 / i.VerticalResolution;
float widthFactor = newWidth / e.MarginBounds.Width;
float heightFactor = newHeight / e.MarginBounds.Height;
if (widthFactor > 1 | heightFactor > 1)
{
if (widthFactor > heightFactor)
{
newWidth = newWidth / widthFactor;
newHeight = newHeight / widthFactor;
}
else
{
newWidth = newWidth / heightFactor;
newHeight = newHeight / heightFactor;
}
}
e.Graphics.DrawImage(i, 0, 0, (int)newWidth, (int)newHeight);
}
如何打印
答案 0 :(得分:3)
您的图片已包含边距,因此当您使用e.MarginBounds属性时,您的边距实际上会翻倍。要修复,请改用PageBounds属性。
float widthFactor = newWidth / e.PageBounds.Width;
float heightFactor = newHeight / e.PageBounds.Height;