打印纸宽为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.DpiXC#打印机分辨率
经过打印试验,搞好将打印纸铺满,于是我计算打印机的分辨率:240/(60/25.4)=101.6 DPI,
但我在代码中获取打印机分辨却为203!
e.Graphics.DpiX .ToString ()的值为"203"!
为什么相差了一半?
这个问题拖了很久都未解决,也不知道哪个地方出现了错误,求指点呀……Graphics.DpiXC#打印机分辨率
分辨率为:240pixel/2.36inch=101.6dpi
图形对象的DPI可以自己设置
PrinterResolution pr = new PrinterResolution();
pr.X = 1200;
pr.Y = 1200;
df.PrinterResolution = pr;
pd.DefaultPageSettings = df;
打印机的DPI是可以设置的,在首选项也能看到喔
你在代码中获取的DPI就是打印机的DPI啊。
你直接测试你的标签坐指定就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厘米呢?
那么你在测量的时把你的测量数据mm值对到DrawString坐标即。
不用管设备分辨率、DPI 什么的。因为它是与设备无关的。
e.Graphics.PageUnit = GraphicsUnit.Millimeter测量值 往DrawString里写就行了。 PaperSize 用的是英尺 一般我们都是用的是毫米 Millimeter所以需要转换一下纸大小。width为mm width/25.4 *100 好像就可以了。你自己查一下