打印固定尺寸具有不同打印分辨率的图像不会改变打印尺寸

时间:2014-09-07 11:38:37

标签: c# printing resolution

我创建了一个固定的600X600像素大小的位图图像, 在里面画了一些东西并试图打印出来 使用打印机的不同打印分辨率的时间 可用PrinterSettings.PrinterResolutions

PrintDocument pd = new PrintDocument();
PrinterResolution pr = pd.PrinterSettings.PrinterResolutions[printResCB.SelectedIndex];
pd.DefaultPageSettings.PrinterResolution = pr;
pd.PrintPage += PrintPage;
pd.Print();

private void PrintPage(object o, PrintPageEventArgs e)
{
  System.Drawing.Image img = pictureBox1.Image;
  Point loc = new Point(100, 100);
  e.Graphics.DrawImage(img, loc);
}

出现所有不同打印分辨率的打印文档 大小完全相同。 我期望每个打印分辨率的图像大小恒定 应该会产生不同的图像尺寸。

最终我想知道转换为mms的像素 对于每个具体的决议。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

PrinterResolutions对打印输出的大小没有影响。它只是告诉打印机它应该对它打印的数据应用哪些内部分辨率。如果打印机遵循设置,结果将看起来更像颗粒(低分辨率)或更淡(环保),但总是具有您输入三个相关参数的大小:

  • PageUnit告诉您如何阅读发送的号码,例如像素,毫米,1/100英寸..
  • PageScale是修正系数
  • 第三个“参数”取决于您打印的内容:如果是图片,则需要使用DrawImage格式,该格式不仅会发送Location,还会发送一个完整的Rectangle,即包括Size

这将打印缩放到15厘米正方形的图像。 (50 * 3)

e.Graphics.PageUnit = GraphicsUnit.Millimeter;
e.Graphics.PageScale = 3f;
e.Graphics.DrawImage(pictureBox1.Image, new Rectangle(0, 0, 50, 50));

要查看您在PrinterResolutions集合中看到的分辨率所需的输出大小的变化,您必须分析数字并相应地计算参数。