2016-02-15 35 views
0

我有一個在屏幕或打印機上書寫文字的類。在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處,文本以屏幕上相同的位置結束。當我打印「頁面」時,即使中心看起來處於相同的位置,兩個單詞也不會在同一位置結束。

我已經搜索,但無法找到任何解決我的問題。

+0

當然好。您將GraphicsUnit設置爲毫米。屏幕和打印機的分辨率有很大差異。像素是一個很好的折衷辦法,讓屏幕和打印機的外觀幾乎相同。不完美。 –

+0

對不起忘了提到圖形g之前設置爲在屏幕和打印機上指向。 – TheBurnMill

+0

你如何計算你使用的比例因子?您還需要設置Graphics.dpiX/Y值。我通常更喜歡編寫單獨的例程,尤其是。當進入第二頁時,這些規則的差異更甚於頁面單位和分辨率,邊距和紙張尺寸。 – TaW

回答

0

我不確定這是否會有所幫助,但我很久以前就知道打印機壓縮間距與屏幕不同。例如,如果您在文檔上使用製表符和空格鍵空格寫了一堆字母,則在屏幕上顯示的內容與在紙張上打印文檔時看起來有所不同。也許它給你一個開始的地方?

+0

這裏沒有空格字符。我最終分配了一個大的位圖並在其上進行繪製,然後在屏幕和打印機上同時顯示它。我沒有時間再擺弄。 – TheBurnMill

+0

很高興你有一個解決方案......歡呼聲 – DarrenE