【问题标题】:Printing fixed size Image with different printing resolutions doesn't change printed size打印固定尺寸 不同打印分辨率的图像不会改变打印尺寸
【发布时间】:2014-10-31 19:36:19
【问题描述】:

我创建了一个固定的 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 的转换 对于每个特定的分辨率。

我做错了什么?

【问题讨论】:

    标签: c# printing resolution


    【解决方案1】:

    PrinterResolutions 对打印输出的大小没有影响。它只是告诉打印机它应该将哪个内部分辨率应用于它打印的数据。如果打印机支持该设置,则结果会看起来更粗糙(低分辨率)或更苍白(生态),但始终具有您输入三个相关参数的尺寸:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-23
      • 1970-01-01
      • 2018-05-06
      • 1970-01-01
      相关资源
      最近更新 更多