2009-07-13 16 views
1

私たちのアプリケーションで高解像度モニタをサポートする必要があるという要件があります。現在、アプリケーションが高解像度モニタに表示されると、表示されるテキストが小さすぎます。既定では、Arial 12ポイントフォントを使用します。フォントサイズを高解像度モニタにマッピングするために使用するスケーリング係数は何ですか?

テキストを表示するには、フォントサイズを比例して変更する必要があります。私はそれが私にモニター解像度を与えられた目標のフォントサイズを与える公式を考え出すのは難しいと思っています。

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

1)ウィンドウでは、デフォルトで96ピクセルが1論理インチに対応します。つまり、モニタの解像度が上がると、論理的なインチの画面サイズも大きくなります。

2)1ポイントフォントは、論理インチの1/72です。それで、Logical inchあたり96 Pixelsがあるという事実と相まって、Point of Fontの96/72 Pixelがあることが分かります。

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

これで、結果のFontが適切に表示されるように、これらのピクセル数を増やす必要があるスケーリング係数を知る必要があります。スケーリングされたピクセル数を知っていれば、フォントサイズを(96/72)で割り算することで簡単に得ることができます。

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

また、間違っている場合は修正してください。

答えて

3

MSDNページのLOGFONT structureの例があります。あなたの理解は正しいです。ポイントサイズをvertres/72まで拡大する必要があります。

lfHeight = -PointSize * GetDeviceCaps(hDC, LOGPIXELSY)/72; 
2

Windowsの解像度を物理モニタの解像度に合わせるように設定した場合、調整は必要ありません。よく書かれたプログラムは、フォントを適切に拡大縮小するために必要な乗算と除算を行います。最新バージョンのWindowsでは、OSはフォントの解像度を自動的に調整します。

あなたは、単に96

を編集して、実際のDPIと除算して、フォントサイズを掛け、Windows設定のこの外を処理したい場合は、次のWindows Vista以降で、Windowsがない限り、あなたの実際の構成されたDPIを報告しませんDPI対応プログラムを作成します。 Microsoft has some guidance on the subject。マイクロソフトがDPI対応でないプログラムに提供するデフォルトのスケーリングは、あなたの目的にとって十分です。

+0

72で割る。[15char] – avakar

関連する問題