在 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 处,其中文本在屏幕上的相同位置结束。当我打印"页面"时,即使中心似乎在同一位置,这两个词也不会在同一位置结束。
我已经搜索过,但找不到任何可以解决我的问题的东西。
我不确定这是否有帮助,但我很久以前就知道打印机压缩间距的方式与屏幕不同。 例如,如果您在文档上写了一堆字母,字母之间有制表符和空格,则它在屏幕上看起来与在纸上打印文档时不同。 也许它给了你一个开始的地方?