2

多くの例は、ポイント サイズからフォントの論理サイズを計算する次の方法を示しています。これは、私のコードが何年にもわたって行ってきた方法でもあります。

SizeLogical = -MulDiv(SizePt, GetDeviceCaps(hdc, LOGPIXELSY), 72);

しかし、最近、このような例では 72 ではなく 96 の係数を使用していることに気付きました。これは、モニターの物理的な解像度が長年にわたって向上しているためでしょうか?タイポグラフィの従来の 72 ポイント/インチとは対照的に、1 インチあたり 96 ピクセルを表示するのでしょうか? もしそうなら、正しい解決策は要因を動的に決定することですが、それを行うためにどの Windows API を呼び出すのでしょうか? それとも、とにかくすべてを誤解していますか?

4

1 に答える 1

2

72 は 1 インチあたりのポイント数であり、これは決して変わりません。96 は 1 インチあたりのピクセル数で、システムによって異なる場合があります。

あなたが使用している数式は、Microsoft のドキュメントからそのままだと思います。編集 - ここにあります: http://msdn.microsoft.com/en-us/library/dd183499%28v=vs.85%29.aspx

96 は GetDeviceCaps によって返されるため、心配する必要はありません。

于 2012-04-22T14:15:26.447 に答える