计算逻辑字体大小

很多例子都显示了如下的方式来计算字体的大小,这也是我的代码已经做了多年:

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

但是我最近注意到像这样的例子使用的是96而不是72的因子。这是因为显示器的物理分辨率多年来一直在增长,所以它们每英寸显示96像素,而不是印刷术经典的每英寸72点。 如果是这样,正确的解决scheme是dynamic地确定因素,但是哪一个Windows API可以调用呢? 还是我误解了这一切呢?

72是每英寸的点数,这永远不会改变。 96是每英寸像素的数量,并且可以在系统之间变化。

我相信你使用的公式是直接从微软的文档。 编辑 – 这里是: http : //msdn.microsoft.com/en-us/library/dd183499%28v=vs.85%29.aspx

你不必担心96,因为这是由GetDeviceCaps返回的。