C#静默打印使用mm作为单位打印第二张缩小100倍

小程序员 2016-08-24 04:52:15
上代码

void Main()
{
PrintDocument docToPrint = new PrintDocument();
docToPrint.PrintPage += FontToPrint_PrintPage;
docToPrint.Print();
}
private void FontToPrint_PrintPage(object sender, PrintPageEventArgs e)
{
//设置单位为厘米后,第一次打印位置正确
//第二次打印所在位置缩小100倍,第三次继续缩小
e.Graphics.PageUnit = GraphicsUnit.Millimeter;
Font font = new Font("Arial", 9, FontStyle.Bold);
foreach (PrintDataBase model in printModel.PrintList)
{
e.Graphics.DrawString(model.Value, font, myBrush, model.XPosition, model.YPosition);
}
}


这是第一次打印的效果

这是第二次打印的效果
这个单位该如何设置才能在后面的打印中内容不变小?
...全文
224 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
小程序员 2016-08-25
  • 打赏
  • 举报
回复
引用 3 楼 mjp1234airen4385 的回复:
我认为是你model这里的数据发生了变化,导致的。 你如果两次打印是同样的数据,不会出现问题。
model没变化,这个调试过了,不写 e.Graphics.PageUnit = GraphicsUnit.Millimeter;的话也不会变,我知道原因是单位转换的问题,可Margin的单位可以调到Main方法里面设定,单e.Graphics没办法在外部设置,打印完成后我再设定e.Graphics.PageUnit = GraphicsUnit.Display;也没用。。。
mjp1234airen4385 2016-08-25
  • 打赏
  • 举报
回复
我认为是你model这里的数据发生了变化,导致的。 你如果两次打印是同样的数据,不会出现问题。
小程序员 2016-08-24
  • 打赏
  • 举报
回复
默默顶下。。。。。
小程序员 2016-08-24
  • 打赏
  • 举报
回复
在打印中如何设置单位才能在连续打印时坐标不变?

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧