2012-04-22 83 views
1

许多例子表明从点大小,这也是计算字体的逻辑大小的下列方式如何我的代码已经做了多年:计算逻辑字体大小

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

但我最近注意到像this one这样的例子使用了96而不是72的因子。这是因为多年来显示器的物理分辨率已经提高了,所以它们每英寸显示96像素,而不是印刷术经典的每英寸72点?如果是这样,那么正确的解决方案是动态确定因素,但是哪一个Windows API可以通过一个调用来实现呢?还是我误解了这一切?

回答

1

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

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

您不必担心96,因为这是GetDeviceCaps返回的内容。

+0

感谢您的回答。只是要相当肯定:把它保持在72是正确的呢? – Dabbler 2012-04-22 15:14:17

+0

@Dabbler,是的,留在72。 – 2012-04-22 15:19:18