我正在为使用SetCompatibleTextRenderingDefault(true)
的应用程序编写一个C#(ActiveX)插件(强制.net 1.1文本呈现样式)此设置会破坏我使用Graphics.DrawString()输出的一些文本,导致它看起来有点污迹和粗体。与单个控件不同,Graphics
类和BitMap
都没有可用于覆盖个别行为的UseCompatibleTextRendering
属性。没有摆弄,试图弄清楚我正在绘制文字的地方有什么特别之处,我可以做些什么呢?
我的插件所属的应用属于第三方,因此只需更改它对我造成的SetCompatibleTextRenderingDefault
电话就不是一种选择。
编辑:'特殊'的东西似乎是背景的颜色以及它如何影响所使用的抗锯齿;通过我如何设置矩形来解决这个问题似乎不是一个选择。
答案 0 :(得分:2)
我建议使用TextRenderer.DrawText
代替Graphics.DrawString
- 即使禁用了兼容的文本呈现,它似乎也会产生更清晰,更一致的结果。
答案 1 :(得分:1)
我通过将TextRenderingHint
更改为SingleBitPerPixelGridFit
找到了我的问题的修复程序,这是不使用兼容文本呈现时的默认设置。当它被设置为true时,它使用ClearType枚举,除了因为任何原因不同于正常的cleartype文本,结果是丑陋的并且非常难以阅读。
textGraphics.TextRenderingHint =
System.Drawing.Text.TextRenderingHint.SingleBitPerPixelGridFit;