我有一個在屏幕或打印機上書寫文字的類。在C屏幕和打印機上以不同的文字呈現#
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處,文本以屏幕上相同的位置結束。當我打印「頁面」時,即使中心看起來處於相同的位置,兩個單詞也不會在同一位置結束。
我已經搜索,但無法找到任何解決我的問題。
當然好。您將GraphicsUnit設置爲毫米。屏幕和打印機的分辨率有很大差異。像素是一個很好的折衷辦法,讓屏幕和打印機的外觀幾乎相同。不完美。 –
對不起忘了提到圖形g之前設置爲在屏幕和打印機上指向。 – TheBurnMill
你如何計算你使用的比例因子?您還需要設置Graphics.dpiX/Y值。我通常更喜歡編寫單獨的例程,尤其是。當進入第二頁時,這些規則的差異更甚於頁面單位和分辨率,邊距和紙張尺寸。 – TaW