我创建了一个固定的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的像素 对于每个具体的决议。
我做错了什么?
答案 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
集合中看到的分辨率所需的输出大小的变化,您必须分析数字并相应地计算参数。