2012-07-25 41 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