Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SetCompatibleTextRenderingDefault(true)和Graphics.DrawString()文本呈现_C#_Winforms_Graphics - Fatal编程技术网

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;