C# 使用不同的打印分辨率打印固定大小的图像不会';不要改变印刷尺寸

C# 使用不同的打印分辨率打印固定大小的图像不会';不要改变印刷尺寸,c#,printing,resolution,C#,Printing,Resolution,我创建了一个固定的600X600像素大小的位图图像, 在里面画了一些东西,并试图打印出来,每个 使用与打印机不同的打印分辨率的时间 可用的PrinterSettings.PrinterResolutions PrintDocument pd = new PrintDocument(); PrinterResolution pr = pd.PrinterSettings.PrinterResolutions[printResCB.SelectedIndex]; pd.DefaultPageSett

我创建了一个固定的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);
}
所有不同打印分辨率的打印文档 大小完全一样。 我希望每个打印分辨率都有一个恒定的图像大小 应导致不同的图像大小

最终我希望知道像素到彩信的转换 对于每个具体决议


我做错了什么?

打印解决方案对打印输出的大小没有影响。它只是告诉打印机哪些内部分辨率应该应用于打印的数据。如果打印机符合该设置,结果将看起来更粗糙(低分辨率)或更苍白(eco),但始终具有输入三个相关参数的大小:

  • PageUnit
    告诉您如何读取发送的数字,例如像素、毫米、1/100英寸
  • PageScale
    是一个校正系数
  • 第三个“参数”取决于您打印的内容:对于图像,您需要使用
    DrawImage
    格式,该格式不仅发送
    位置
    ,而且发送完整的
    矩形
    ,即包括
    大小
这将打印缩放到15cm正方形的图像。(50毫米*3)

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

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