我的LOGFONT.lfHeight值为-11。但是,我知道字体大小实际上是8,所以我需要将此数字转换为不同的度量单位吗?我在MSDN文档中找到了这个公式:

int height = abs((pixels * DOTSY) / 72);


这将占用像素并将其设置为LOGFONT可以使用的高度值。如果我以其他方式工作:

int pixels = abs((height / DOTSY) * 72);


这给我的价值是8.24。我是否假设这是将字体高度转换为可用值所需要做的所有工作?

最佳答案

是。 DOTSY将为96,这是Windows中DPI中的默认监视器分辨率。您将需要确保该值对要写入的设备正确-打印机通常具有更高的分辨率,并且可以更改监视器分辨率。 lfHeight是负数,表示字体映射器应使用字符高度而不是单元格高度进行匹配,因此此处仅绝对值很重要。

关于c# - 如何将LOGFONT.lfHeight转换为像素?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/480320/

10-09 09:30