1

私は根本的な何かが欠けていると思います。できればどんなものか教えてください。

VS2008 を使用して小さな C++ WinForms アプリを開発しました。そのため、.NET 3.5 SP1 を使用して構築されています。それが重要な場合、私の開発ボックスはWin7です。

このバージョンの VStudio では、WinForms コントロールの UseCompatibleTextRendering プロパティのデフォルト値は false です。そして、これは私にとって重要ではないと思います。カスタム描画のテキストやコントロールはありません。

このアプリは、私の Win7 ボックスでうまく動作しているように見えます。

パッケージ化して (.NET 3.5 に沿ってドラッグ)、WinXP デスクトップの 1 つにインストールすると、ボタンとラベルの見栄えが悪くなります。テキストはそれらの中で切り落とされています。

UseCompatibleTextRendering を true に設定して XP ボックスで実行すると、テキストがボタンとラベルに収まります。

私の質問は:なぜですか?インストールにより、XP ボックスに .Net 3.5 が配置されるため、アプリは適切なバージョンの WinForms を見つけて使用できるはずですよね?

アプリと .NET 3.5 をこれらのボックスに配置する前に、.NET がまったくないことに注意してください。Microsoft の自動更新は取得されません。IT担当者がパッチとアップグレードを管理します。

[この種のことは、私が作成したアプリで以前に発生しました.エンジニアリング マシン上で見栄え/動作が優れているのは、私たちがそれらを維持し、ほとんどが最新のものを持っているためです。企業ボックスで実行する場合、通常は実行されず、VCredist をインストールする必要があります。]

手元の質問に戻ります。UseCompatibleTextRendering を false に設定すると、テキストの見栄えが良くなるので、できればそのままにしておきたいと思います。テキストが収まらない原因で、これらの XP ボックスに何が欠けているのかを理解したいと思います。

ありがとう

S

4

1 に答える 1

2

これはおそらくスケーリングの問題です。XP マシンのビデオ アダプタの DPI 設定またはシステム フォント サイズが異なる可能性があります。スケーリングは、フォームの AutoScaleMode と、コンテナー コントロールの Font プロパティを "継承" するかどうかによって影響を受けます。[プロパティ] ウィンドウで [フォント] プロパティが太字でない場合はどうなりますか。

フォームでスケーリングが機能するかどうかを確認する簡単な方法の 1 つ:

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 に答える