许多示例显示了以下从点大小计算字体逻辑大小的方法,这也是我的代码多年来一直在使用它的方式:
SizeLogical = -MulDiv(SizePt, GetDeviceCaps(hdc, LOGPIXELSY), 72);
但是我最近注意到像this one这样的例子使用的因子是96而不是72.这是因为显示器的物理分辨率多年来一直在增加,所以它们显示每英寸96像素,而不是排版的经典每英寸72点?如果是这样,正确的解决方案是动态确定因子,但是哪个Windows API会调用它来执行此操作?或者我还是误解了这一切?
答案 0 :(得分:1)
72是每英寸的点数,这永远不会改变。 96是每英寸的像素数,它可以在不同系统之间变化。
我相信您使用的公式直接来自Microsoft文档。编辑 - 这是:http://msdn.microsoft.com/en-us/library/dd183499%28v=vs.85%29.aspx
您不必担心96,因为这是GetDeviceCaps返回的内容。