使用图形来测量Window用户字体大小设置

时间:2011-05-22 12:19:49

标签: windows font-size setting

最近提出了一个关于检索用户字体设置的问题,比如96或120 dpi,几个SO大师告诉我使用任何图形对象的dpiX和dpiY。

但是dpi是否与屏幕尺寸(X / Y)或字体大小(仅X可用)有关?

换句话说,在所有情况下,我能确定dpiX = dpiY吗?

否则,新字体看起来会拉长,不是吗?

例如,如果dpiX = 96且dpiY = 60 ???

1 个答案:

答案 0 :(得分:0)

如果文本与水平轴或垂直轴对齐,则使用DPI作为另一个轴来指定高度。在实例化字体时,会考虑其他维度。

例如,如果您想要正常的文本,那么您可以根据垂直DPI计算像素高度:

lf.lfHeight = -::MulDiv(point_size, ::GetSysMetrics(hdc, LOGPIXELSY), 72);

如果您的文字旋转了90度,那么您将使用LOGPIXELSX代替LOGPIXELSY

话虽这么说,我从来没有见过一个Windows显示器,DPI在两个方向上都不一样。我看到它们在某些打印机上有所不同,并且驱动程序处理不一致,这导致了unanswered question