为什么需要UseCompatibleTextRendering?

时间:2010-06-10 19:57:27

标签: winforms .net-3.5 textrenderer

我想我错过了一些基本的东西。如果可以,请告诉我它是什么。

我使用VS2008开发了一个小的C ++ WinForms应用程序。所以它是使用.NET 3.5 SP1构建的。 我的开发框是Win7,如果重要的话。

此版本的VStudio中WinForms控件中UseCompatibleTextRendering属性的默认值为false。这对我来说无关紧要,我不认为。我没有任何自定义绘制 文字或控件。

该应用程序在我的Win7盒子上运行良好。

如果我将其打包(沿着.NET 3.5拖动)并将其安装在我们的某个WinXP桌面上,则按钮和标签看起来不太好;文字被砍掉了。

如果我将UseCompatibleTextRendering设置为true然后在XP框上运行它,则文本适合于 按钮和标签。

我的问题是:为什么?安装将.Net 3.5放在XP机器上,因此应用程序应该能够找到并使用正确版本的WinForms,对吧?

我应该注意,在我将app + .NET 3.5放在这些盒子上之前,它们根本没有.NET。他们没有获得自动Microsoft更新;我们的IT人员为补丁和升级提供支持。

[这种事情发生在我创建的应用程序之前......他们在工程机器上看起来/工作得很好,因为我们维护这些并且他们大多数都拥有最新的东西。当它们在公司盒子上运行时,它们通常不运行并且需要安装VCredist。 ]

回到手头的问题:当UseCompatibleTextRendering设置为false时,文本看起来更好,所以如果可以的话,我宁愿保持这种方式。我想了解那些使文本不适合的XP盒子上可能缺少的东西。

由于

取值

1 个答案:

答案 0 :(得分:2)

这可能是一个扩展问题,XP机器可能有不同的视频适配器DPI设置或不同的系统字体大小。缩放受表单的AutoScaleMode影响,以及它们是否“继承”容器控件的Font属性。如果Font属性在“属性”窗口中不是粗体,它会怎么做。

检查表单中的缩放是否有效的一种快速方法:

protected:
    virtual void OnLoad(EventArgs^ e) override {
        this->Font = gcnew System::Drawing::Font(this->Font->FontFamily, 
            this->Font->SizeInPoints * 125 / 96);
    }

扩展它。它可能会在XP机器上缩小,使用96/125。

相关问题