2012-07-25 75 views
2

打印後,我的文字質量出現問題!它不光滑和反意見!如何提高使用「graphics.DrawString」後打印的文字質量?

這是故事:

我從位圖(Graphics.FromImage(MYBITMAP))和創建一個圖形,我認爲這是我的問題的起點,因爲我不能使用PrintPageEvenArg(E ),但我沒有別的選擇!

後,我開始寫這個圖形一些文字:通過閱讀本網站和其他一些類似的問題的答案

,我做我的圖形性能,如smoothingMode,TextRenderingHint一些變化,..那個U繼續看......但不幸的是他們都沒有幫助我!

SolidBrush sb = new SolidBrush(Color.White); 
    graphics.FillRectangle(sb,oRectangle); //it was suggested to be done before antialiases inorder to get effects 

    graphics.TextRenderingHint = TextRenderingHint.AntiAlias; //I also tried ClearTypeGridFit 
    graphics.SmoothingMode = 
     System.Drawing.Drawing2D.SmoothingMode.AntiAlias; 
    graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; 
    graphics.PixelOffsetMode = PixelOffsetMode.HighQuality; 
    graphics.CompositingQuality = CompositingQuality.HighQuality; 
    graphics.CompositingMode = CompositingQuality.SourceOver; 

    graphics.DrawString(strValue, boxStyle.Font, sb, oRectangle, StringFormat); 

通過antialising我有更好的平滑邊緣,但我看到了很多額外的像素的靠近我的文字和我的文字顏色似乎變得更輕,所以我可以說,通過平滑邊緣我的文字質量,甚至變得更糟!

plz幫幫我! Thanx提前:)

+1

ClearType和您嘗試應用的其他文本呈現提示僅適用於**屏幕**圖像。打印時他們什麼都不做。這幾乎是反鋸齒的工作原理。它以不同的顏色或灰色陰影增加了額外的像素,有助於平滑文本的邊緣。真的不清楚是什麼導致了你的問題;打印機的分辨率非常高,所以它們應該能夠輸出高質量的圖像。爲什麼你不能使用'PrintPageEventArgs'?你爲什麼「別無選擇」? – 2012-07-25 08:18:24

+0

@CodyGray:因爲我正在開發一個以前寫過的項目,而且解決方案有線程和許多方法,我不能完全改變它們。和所有的方法,如MyPrintDocument_PrintPage有這個事件,在我需要這個事件後調用! – 2012-07-26 17:47:14

回答

2

嘗試使用this solution(GraphicsPath)。在我的項目中,它非常好用。

+0

thanx,我會試試看,並告訴ü結果如何:) – 2012-07-26 20:16:18

+0

我使用了GraphicsPath,它對抗鋸齒有很好的效果,但不幸的是我有一個額外的打印前保存和恢復圖像的概率,所以我得到一個低質量那涵蓋了你的解決方案的利潤,你能看到我的新問題在這個鏈接,並幫助我,如果你可以? http://stackoverflow.com/questions/11699219/save-an-image-as-a-bitmap-without-loosing-quality – 2012-07-28 07:43:36