1

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

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

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

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

例如,如果 dpiX = 96 和 dpiY = 60 呢?

4

1 回答 1

0

如果您的文本与水平轴或垂直轴对齐,则使用另一个轴的 DPI 来指定高度。当字体被实例化时,它将考虑另一个维度。

例如,如果您想要正常方向的文本,则根据垂直 DPI 计算像素高度:

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

如果您的文本旋转 90 度,那么您将使用LOGPIXELSX而不是LOGPIXELSY.

话虽如此,我从未见过 DPI 在两个方向上都不相同的 Windows 显示器。我已经看到它们在某些打印机上有所不同,并且驱动程序对此的处理不一致,这导致了这个未回答的问题

于 2011-05-22T13:45:50.410 回答