在 C# 中,文本在屏幕和打印机上的呈现方式不同

本文关键字:方式不 文本 屏幕 打印机 | 更新日期: 2023-09-27 18:34:36

我有一个在屏幕或打印机上写文本的类。

public void draw(float scale, Graphics g)
{
    Font font = new Font(fontName, size, FontStyle.Regular, GraphicsUnit.Millimeter);
    SolidBrush brush = new SolidBrush(Color.Black);
    Pen pen = new Pen(Color.Black, 1);
    PointF point = new PointF(0, 0);// new PointF(l + scale * x, t + scale * y);
    rect = new Rectangle(0, 0, (int)(g.MeasureString(text, font).Width), (int)(g.MeasureString(text, font).Height));
    System.Drawing.Drawing2D.Matrix m = g.Transform;
    g.ScaleTransform(scale, scale);
    g.TranslateTransform(x - rect.Width / 2, y - rect.Height / 2);
    g.RotateTransform(angle);
    g.DrawString(text, font, brush, point);
    g.Transform = m;
}
不同的

文本块具有不同的字体大小,并放置在"页面"的不同x位置。我将两个不同大小的块放在一个 x 处,其中文本在屏幕上的相同位置结束。当我打印"页面"时,即使中心似乎在同一位置,这两个词也不会在同一位置结束。

我已经搜索过,但找不到任何可以解决我的问题的东西。

在 C# 中,文本在屏幕和打印机上的呈现方式不同

我不确定这是否有帮助,但我很久以前就知道打印机压缩间距的方式与屏幕不同。 例如,如果您在文档上写了一堆字母,字母之间有制表符和空格,则它在屏幕上看起来与在纸上打印文档时不同。 也许它给了你一个开始的地方?