百度无解——打印机分辨率(DPI)问题

树影重重 2013-08-19 04:59:06
打印纸宽为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"!
为什么相差了一半?
这个问题拖了很久都未解决,也不知道哪个地方出现了错误,求指点呀……
...全文
1147 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
卧_槽 2013-08-20
  • 打赏
  • 举报
回复
看看打印机设置里面的DPI是多少。
  • 打赏
  • 举报
回复
打印机的dpi都是大于电脑的
游戏人间 2013-08-20
  • 打赏
  • 举报
回复
关键代码。 e.Graphics.PageUnit = GraphicsUnit.Millimeter 测量值 往DrawString里写就行了。 PaperSize 用的是英尺 一般我们都是用的是毫米 Millimeter所以需要转换一下纸大小。 width为mm width/25.4 *100 好像就可以了。你自己查一下
游戏人间 2013-08-20
  • 打赏
  • 举报
回复
哈哈你有个关键值没设定 在打印的时候可以指定 PageUnit 也就是 使用单位。如果你指定的是mm 毫米。 那么你在测量的时把你的测量数据mm值对到DrawString坐标即。 不用管设备分辨率、DPI 什么的。因为它是与设备无关的。
树影重重 2013-08-20
  • 打赏
  • 举报
回复
引用 11 楼 wonderfuly 的回复:
DrawString不是有坐标吗? 你直接测试你的标签坐指定就OK了。 PrintDocument本身就是与设备无关的。你还中纠结DPI干什么?
额,我说明一下我的理解……比如
            e.Graphics.DrawString(Lab_ID.Text, new Font(new FontFamily("黑体"), 16, FontStyle.Bold), System.Drawing.Brushes.Black, 10, 15);
这时打印的字(Lab_ID.Text)离打印纸的左边为10个像素,我假设这个距离为1厘米, 在第二次打印前,我将打印机的打印分辨率调高一倍,那么同样是10个像素的边距,会不会是0.5厘米呢?
游戏人间 2013-08-20
  • 打赏
  • 举报
回复
DrawString不是有坐标吗? 你直接测试你的标签坐指定就OK了。 PrintDocument本身就是与设备无关的。你还中纠结DPI干什么?
树影重重 2013-08-20
  • 打赏
  • 举报
回复
引用 8 楼 wonderfuly 的回复:
搞打印不需要DPI什么设计。 直接在 PrintDocument上打印输出即可。
那输出的位置怎么确定呢?graphics.drawstring 的位置呀,有其他方法吗?
卧_槽 2013-08-20
  • 打赏
  • 举报
回复
引用 7 楼 u010484683 的回复:
[quote=引用 3 楼 yuwenge 的回复:] 看看打印机设置里面的DPI是多少。
这是一个条码打印机,型号为:Eltron LP2642,里面写着最大支持分辨率为203,我找不到调节分辨率的选项,有一个出纸速度的选项可以选:2.5cm/s,3.7cm/s,5cm/s,但我试过都没什么却别……[/quote] 你在代码中获取的DPI就是打印机的DPI啊。
游戏人间 2013-08-20
  • 打赏
  • 举报
回复
搞打印不需要DPI什么设计。 直接在 PrintDocument上打印输出即可。
树影重重 2013-08-20
  • 打赏
  • 举报
回复
引用 3 楼 yuwenge 的回复:
看看打印机设置里面的DPI是多少。
这是一个条码打印机,型号为:Eltron LP2642,里面写着最大支持分辨率为203,我找不到调节分辨率的选项,有一个出纸速度的选项可以选:2.5cm/s,3.7cm/s,5cm/s,但我试过都没什么却别……
树影重重 2013-08-20
  • 打赏
  • 举报
回复
引用 4 楼 assky124 的回复:
打印机的DPI应该是固定的吧 图形对象的DPI可以自己设置
PrintDocument pd = new PrintDocument();           

     PageSettings df = new PageSettings();

            df.PaperSize = new PaperSize("A4", 300, 142);
            PrinterResolution pr = new PrinterResolution();
            pr.X = 1200;
            pr.Y = 1200;
            df.PrinterResolution = pr;
            pd.DefaultPageSettings = df;
打印机的DPI是可以设置的,在首选项也能看到喔
assky124 2013-08-20
  • 打赏
  • 举报
回复
打印机的DPI应该是固定的吧 图形对象的DPI可以自己设置
树影重重 2013-08-19
  • 打赏
  • 举报
回复
引用 1 楼 yuwenge 的回复:
你对打印机的dpi算错了呗。
貌似没错呀,纸的宽度为:60mm/25.4mm/inch=2.36inch 分辨率为:240pixel/2.36inch=101.6dpi
卧_槽 2013-08-19
  • 打赏
  • 举报
回复
你对打印机的dpi算错了呗。

110,545

社区成员

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

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

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