如何估计要打印的字符串的长度
本文关键字:字符串 打印 何估计 | 更新日期: 2023-09-27 18:29:19
我正在尝试估计打印字符串的长度。
Font newFont = new Font("Arial", 12, FontStyle.Bold, GraphicsUnit.Point);
label1.Font = newFont;
labe1.Text = "300028";
Graphics g = Graphics.FromHwnd(label1.Handle);
SizeF txtSize = g.MeasureString(label1.Text, label1.Font);
txtSize为{宽度=60.3177,高度=19.875}点。
实际宽度应为60.3177*0.353=21.29 mm
其中(1点=1/72英寸=0.353毫米)
在纸上(用Word打印),宽度约为13.5毫米
为什么我们用MeasureString计算的值(21.29 mm)和实际值(13.5 mm)之间有这么大的差异?
我知道MeasureString方法的局限性,但我不认为这不能证明有这么大的差异。
我缺少什么?
因为初始化Graphics
对象错误。您使用的是显示句柄,而不是打印手柄。
根据这篇文章,你的Graphics
对象应该在PrintDocument
:上使用PrinterSettings.CreateMeasurementGraphics
方法获得
Graphics g = pd.PrinterSettings.CreateMeasurementGraphics();
打印单位默认为百分之一英寸,而不是72英寸。
正如另一个答案所提到的,您需要使用PrinterSettings.CreateMeasurementGraphics
来获得一个图形对象,该对象将以正确的方式配置以测量要打印的文本。