C#

时间:2016-02-15 15:12:20

标签: c# winforms printing

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

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处放置两个不同大小的块,其中文本在屏幕上的相同位置结束。当我打印“页面”时,即使中心看起来处于同一位置,这两个单词也不会在同一位置结束。

我已搜索但无法找到解决问题的任何内容。

1 个答案:

答案 0 :(得分:0)

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