C# SetCompatibleTextRenderingDefault(true)和Graphics.DrawString()文本呈现
我正在为一个使用C# SetCompatibleTextRenderingDefault(true)和Graphics.DrawString()文本呈现,c#,winforms,graphics,C#,Winforms,Graphics,我正在为一个使用SetCompatibleTextRenderingDefault(true)(强制.net 1.1文本呈现样式)的应用程序编写一个C#(ActiveX)插件。此设置会将我输出的一些文本与Graphics.DrawString()相混淆,使其看起来有点模糊和粗体。与单个控件不同,图形类和位图都没有可用于覆盖单个行为的UseCompatibleTextRendering属性。除了瞎弄弄弄弄清楚我在哪里画的文本没有被弄坏还有什么特别之处,我能做些什么吗 我的插件所针对的应用程序属于第
SetCompatibleTextRenderingDefault(true)
(强制.net 1.1文本呈现样式)的应用程序编写一个C#(ActiveX)插件。此设置会将我输出的一些文本与Graphics.DrawString()相混淆,使其看起来有点模糊和粗体。与单个控件不同,图形
类和位图
都没有可用于覆盖单个行为的UseCompatibleTextRendering
属性。除了瞎弄弄弄弄清楚我在哪里画的文本没有被弄坏还有什么特别之处,我能做些什么吗
我的插件所针对的应用程序属于第三方,因此仅更改它对我造成的SetCompatibleTextRenderingDefault
调用是不可取的
编辑:“特殊”的东西似乎是背景的颜色以及它如何影响使用的抗锯齿;因此,通过设置矩形来修复它似乎不是一种选择。我建议使用
TextRenderer.DrawText
而不是Graphics.DrawString
-即使禁用兼容的文本渲染,它似乎也能产生更清晰的效果,更一致的结果。我通过将TextRenderingHint
更改为SingleBitPerPixelGridFit
找到了解决问题的方法,这是不使用兼容文本渲染时的默认设置。当它被设置为true时,它使用ClearType枚举中的一个值,除了由于与普通ClearType文本不同的原因,结果很难看并且非常难以读取之外
textGraphics.TextRenderingHint =
System.Drawing.Text.TextRenderingHint.SingleBitPerPixelGridFit;