1

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

我使用 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,对吧?

我应该注意到,在我将我的应用程序 + .NET 3.5 放在这些盒子上之前,它们根本没有 .NET。他们没有自动获得 Microsoft 更新;我们的 IT 人员负责修补和升级。

[ 这种事情以前在我创建的应用程序中发生过。它们在工程机器上看起来/工作得很好,因为我们维护这些,而且它们大部分都有最新的东西。当它们在企业机器上运行时,它们通常不运行并且需要安装 VCredist。]

回到手头的问题:UseCompatibleTextRendering 设置为 false 时文本看起来更好,所以如果可以的话,我宁愿保持这种状态。我想了解那些使文本不合适的 XP 框可能缺少的内容。

谢谢

小号

4

1 回答 1

2

这可能是缩放问题,XP机器可能有不同的视频适配器DPI设置或不同的系统字体大小。缩放受窗体的 AutoScaleMode 以及它们是否“继承”容器控件的 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。

于 2010-06-10T20:24:38.163 回答