3

アプリケーションが高解像度モニターをサポートする必要があるという要件があります。現在、アプリケーションを高解像度モニターで起動すると、表示されるテキストが小さすぎます。デフォルトでは Arial 12 ポイントのフォントを使用します。

テキストを表示するには、フォント サイズを比例的に変更する必要があります。モニターの解像度を考慮して、目標のフォント サイズを求める公式を考え出すのは難しいと感じています。

これが私の問題の理解です。

1) Windows では、デフォルトで 96 ピクセルが 1 論理インチに相当します。これは、モニターの解像度が上がると、論理インチ単位の画面サイズも大きくなることを意味します。

2) 1 ポイント フォントは、論理インチの 1/72 です。したがって、論理インチあたり 96 ピクセルがあるという事実と組み合わせると、フォントのポイントあたり 96/72 ピクセルがあることがわかります。

これは、12 ポイントのフォントの場合、占有するピクセル数が 12*96/72 = 16 ピクセルであることを意味します。

ここで、結果のフォントが適切に表示されるように、これらのピクセル数を増やすために必要な倍率を知る必要があります。スケーリングされたピクセル数がわかっている場合は、(96/72) で割るだけでフォント サイズを取得できます。

すべてのモニター解像度で適切にスケーリングされたフォントを確保するために推奨されるスケーリング係数は何ですか?

また、私の理解が間違っている場合は修正してください。

4

2 に答える 2

4

LOGFONTMSDN ページに構造の例があります。あなたの理解は正しいです。ポイントサイズを でスケーリングする必要がありますvertres / 72

lfHeight = -PointSize * GetDeviceCaps(hDC, LOGPIXELSY) / 72;
于 2009-07-13T07:09:12.197 に答える
2

Windows で解像度を物理モニターの解像度と一致するように設定した場合、調整は必要ありません。適切に作成されたプログラムは、フォントを適切にスケーリングするために必要な乗算と除算を実行します。Windows の最新バージョンでは、OS が解像度について嘘をつき、フォントを自動的にスケーリングします。

これを Windows の設定外で処理したい場合は、フォント サイズに実際の DPI を掛けて、96 で割ります。

編集: Windows Vista 以降では、DPI 対応のプログラムを作成しない限り、Windows は実際に構成された DPI を報告しません。Microsoft は、この件に関していくつかのガイダンスを提供しています。Microsoft が非 DPI 対応プログラムに提供する既定のスケーリングは、目的には十分であることがわかる場合があります。

于 2009-07-13T07:09:47.827 に答える