如何在c#打印中设置打印点

本文关键字:打印 设置 | 更新日期: 2023-09-27 18:09:16

我的打印表单包含多个打印位置。我想将文本框文本传递到打印文档中的正确位置。我用(像素)来表示打印点。

g.DrawString("Total", new Font("Arial", 10, FontStyle.Regular), Brushes.Black, new Point(40, 160));
g.DrawString(": ", new Font("Arial", 10, FontStyle.Regular), Brushes.Blue, new Point(150, 160));

测量单位为厘米,并转换为像素。但它没有放在正确的位置。

我有什么选择来更好地控制测量单位?

如何在c#打印中设置打印点

在你的Graphics实例上PageUnit的默认设置是Display

显示设备的度量单位。通常用于视频显示器的像素,用于打印机的1/100英寸。

所以在不改变任何东西的情况下,prininterdocument的图形实例上的一个点描绘的是1/100英寸。

有了这些信息,一个可能的解决方案是引入辅助方法将英寸计算为1/100英寸,将厘米计算为英寸。
    public static PointF FromCm(float cmx, float cmy)
    {
        const float cm2inch = 1/2.54F;
        return FromInch(cmx * cm2inch, cmy * cm2inch);
    }
    public static PointF FromInch(float inchx, float inchy)
    {
        return new PointF(inchx * 100, inchy * 100);
    }

并像这样使用:

        g.DrawString(
            "Total", 
            new Font("Arial", 10, FontStyle.Regular), 
            Brushes.Black, 
            FromCm(1,1));

GraphicsUnit枚举确实有Millimeter的设置。

        g.PageUnit = GraphicsUnit.Millimeter;
        g.DrawString(
           "Total",
           new Font("Arial", 10, FontStyle.Regular),
           Brushes.Black,
           new PointF(25 , 10)); // due to millimeter 
                                 // setting this is now 2,5 cm and 1 cm

在涂装过程中可以随时切换PageUnit。因此,您可以混合和匹配任何方便的测量单位。