1

我不想使用兼容的文本渲染,但我不想使用

Application.SetCompatibleTextRenderingDefault(false);

自然地,我认为我所要做的就是将每个标签的 UseCompatibleTextRendering 属性设置为 false。但是,如果 UseCompatibleTextRendering 设置为 true,Forms Designer 显然只会生成设置属性的代码。

没问题,我想,这一定意味着 UseCompatibleTextRendering 默认初始化为 false。然而,当我启动我的表单时,你瞧,我看到了丑陋的 CompatibleTextRendering。所以,一个问题:

1)为什么当我将它设置为false时设计师没有为UseCompatibleTextRendering添加代码,而当我将它设置为true时,如果默认值为true?

4

2 回答 2

5

设计器不添加设置UseCompatibleTextRendering为的代码false,因为false是默认值。

那么,为什么控件默认使用兼容的文本渲染,如果属性的默认值为false,那似乎是……奇怪?好吧,该Application.SetCompatibleTextRenderingDefault方法将给定值分配给 Control 类中的一个静态字段,并且 Control 类的静态构造函数将该字段初始化为true.

因此,删除该行将Application.SetCompatibleTextRenderingDefault(false);导致应用程序使用兼容的文本呈现,这与您根据UseCompatibleTextRendering属性的默认值可能会想到的相反。

我能看到的唯一合理的解决方案是简单地将自动生成的调用留在Application.SetCompatibleTextRenderingDefault原处。

于 2009-08-19T07:45:14.917 回答
3

问题出现在我为在Microsoft Excel中使用而编写的Com-Interop-DLL中。

DLL 是用VB.NET编写的,并包含一个在Excel中显示的表单。

现在,Excel.Application默认设置UseCompatibleTextRenderingtrue因此,如果 DLL 嵌入在Excel (GDI+-Graphics-Class) 中,但在任何.Net-Windows Application中完全正确,则表单的所有标签和按钮都呈现不佳。

为了纠正这个问题,我必须遍历所有标签和按钮并将on事件设置UseCompatibleTextRendering为。我发现无法在 DLL 和 Excel 中使用。falseForm.LoadSetCompatibleTextRenderingDefault

于 2014-08-19T15:14:12.867 回答