最近提出了一个关于检索用户字体设置的问题,比如96或120 dpi,几个SO大师告诉我使用任何图形对象的dpiX和dpiY。
但是dpi是否与屏幕尺寸(X / Y)或字体大小(仅X可用)有关?
换句话说,在所有情况下,我能确定dpiX = dpiY吗?
否则,新字体看起来会拉长,不是吗?
例如,如果dpiX = 96且dpiY = 60 ???
答案 0 :(得分:0)
如果文本与水平轴或垂直轴对齐,则使用DPI作为另一个轴来指定高度。在实例化字体时,会考虑其他维度。
例如,如果您想要正常的文本,那么您可以根据垂直DPI计算像素高度:
lf.lfHeight = -::MulDiv(point_size, ::GetSysMetrics(hdc, LOGPIXELSY), 72);
如果您的文字旋转了90度,那么您将使用LOGPIXELSX
代替LOGPIXELSY
。
话虽这么说,我从来没有见过一个Windows显示器,DPI在两个方向上都不一样。我看到它们在某些打印机上有所不同,并且驱动程序处理不一致,这导致了unanswered question。