日期:2014-05-17  浏览次数:21272 次

百度无解——打印机分辨率(DPI)问题
打印纸宽为60mm,高为40mm,我设置打印区域为240*160,
pd.DefaultPageSettings.PaperSize = new PaperSize("Custum", 240, 160);
经过打印试验,搞好将打印纸铺满,于是我计算打印机的分辨率:240/(60/25.4)=101.6 DPI,
但我在代码中获取打印机分辨却为203!
e.Graphics.DpiX .ToString ()的值为"203"!
为什么相差了一半?
这个问题拖了很久都未解决,也不知道哪个地方出现了错误,求指点呀……
Graphics.DpiX C# 打印机分辨率

------解决方案--------------------
你对打印机的dpi算错了呗。
------解决方案--------------------
打印机的DPI应该是固定的吧
图形对象的DPI可以自己设置
------解决方案--------------------
引用:
Quote: 引用:

看看打印机设置里面的DPI是多少。

这是一个条码打印机,型号为:Eltron LP2642,里面写着最大支持分辨率为203,我找不到调节分辨率的选项,有一个出纸速度的选项可以选:2.5cm/s,3.7cm/s,5cm/s,但我试过都没什么却别……

你在代码中获取的DPI就是打印机的DPI啊。
------解决方案--------------------
哈哈你有个关键值没设定

在打印的时候可以指定 PageUnit 也就是 使用单位。如果你指定的是mm 毫米。
那么你在测量的时把你的测量数据mm值对到DrawString坐标即。
不用管设备分辨率、DPI 什么的。因为它是与设备无关的。


------解决方案--------------------
关键代码。
e.Graphics.PageUnit = GraphicsUnit.Millimeter

测量值 往DrawString里写就行了。

 PaperSize 用的是英尺 一般我们都是用的是毫米 Millimeter所以需要转换一下纸大小。

width为mm

 width/25.4 *100 好像就可以了。你自己查一下
------解决方案--------------------
打印机的dpi都是大于电脑的