0

vb6 アプリケーションで本当に奇妙な問題に直面しています。他のすべてのマシンでは正常に動作していますが、クライアントのマシンで実行すると、画像が正しく表示されません。

これは問題がどのように見えるかです デモンストレーション 仕様:

Windows 8 Pro (6.2 ビルド 9200) 32 ビット
プロセッサ アーキテクチャ 64 ビット
コア 2 デュオ T9600 2.80 Ghz
Dell Latitude 6400。

同じアプリケーションを他の多くのマシンに展開し、さまざまなオペレーティング システムでさまざまな解像度でテストしました。どこでもそれはうまく機能しています。しかし、クライアントのマシンでは正しく動作しません。

4

1 に答える 1

6

これ以上の情報がないと断言はできませんが、推測は次のとおりです。

Windows 7 以降では、モニターの解像度が高すぎることがシステムによって検出されると、自動的に高 DPI 設定が選択されます。

プログラムが DPI に対応していない場合は、(Windows のバージョン、一部のシステム オプション、およびアプリケーションの特性に基づいて) appcompat のいくつかの形式のいずれかが適用されます。Windows によってどの修復が試みられるかによって、ビットマップ グラフィックスが最終的に拡大縮小されてピクセル化されるか、拡大縮小されずに「予想よりも小さい」ように表示される可能性があります。

火に油を注ぐだけで、多くの場合、ScaleMode = vbPixels を使用して UI レイアウトを作成したり、手動で変換したりして、これらの仮想ピクセルと実際の画面メトリック間の固定比率に依存しようとします。15 Twips/Pixel (1440/96) のハードコーディングは非常に一般的です。これは、96 DPI VGA (および VGA 派生) の正方形ピクセルの画面が長い間使用されていたためです。

この誤謬により、他のプログラムが DPI 修復によってサイズ変更された場合でも、そのようなプログラムはコントロールのサイズを不適切に設定する可能性があります。

この件に関する情報については、高 DPIを読んでみてください。

フォームの背景画像のようなものの場合、実行時に選択するさまざまなサイズのビットマップがいくつか必要になるか、画像を自分でスケーリングする必要があります。

于 2013-10-11T18:20:30.877 に答える