SetCompatibleTextRenderingDefault(true)和Graphics.DrawString()文本呈现

时间:2010-08-26 13:16:30

标签: c# winforms graphics

我正在为使用SetCompatibleTextRenderingDefault(true)的应用程序编写一个C#(ActiveX)插件(强制.net 1.1文本呈现样式)此设置会破坏我使用Graphics.DrawString()输出的一些文本,导致它看起来有点污迹和粗体。与单个控件不同,Graphics类和BitMap都没有可用于覆盖个别行为的UseCompatibleTextRendering属性。没有摆弄,试图弄清楚我正在绘制文字的地方有什么特别之处,我可以做些什么呢?

我的插件所属的应用属于第三方,因此只需更改它对我造成的SetCompatibleTextRenderingDefault电话就不是一种选择。

编辑:'特殊'的东西似乎是背景的颜色以及它如何影响所使用的抗锯齿;通过我如何设置矩形来解决这个问题似乎不是一个选择。

2 个答案:

答案 0 :(得分:2)

我建议使用TextRenderer.DrawText代替Graphics.DrawString - 即使禁用了兼容的文本呈现,它似乎也会产生更清晰,更一致的结果。

答案 1 :(得分:1)

我通过将TextRenderingHint更改为SingleBitPerPixelGridFit找到了我的问题的修复程序,这是不使用兼容文本呈现时的默认设置。当它被设置为true时,它使用ClearType枚举,除了因为任何原因不同于正常的cleartype文本,结果是丑陋的并且非常难以阅读。

textGraphics.TextRenderingHint = 
             System.Drawing.Text.TextRenderingHint.SingleBitPerPixelGridFit;