[英]What is the default font height used in the API CreateFont ? How does it choose a font face?
我修补了一些代码以使其了解 DPI
font = CreateFont (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, FIXED_PITCH | FF_DONTCARE, TEXT ("FixedSys"));
变成了
font = CreateFont ([some scaled value], 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, FIXED_PITCH | FF_DONTCARE, TEXT ("FixedSys"));
如果高度 = 0(第一个参数),我不理解行为
根据 MS
0 字体映射器在搜索匹配项时使用默认高度值。
默认高度值是多少? 我有一位韩国客户抱怨应用程序中的文本在旧代码(高度 = 0)和新代码(高度 = 14)之间以 100% 缩放比例显着缩小。 在英国操作系统上,文本显示相同。
映射器使用不同的字体。
看起来您需要此代码。 字体高度由这个公式计算nHeight = -MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);
PointSize
- 是字体大小, GetDeviceCaps(hDC, LOGPIXELSY)
是通过 GDI(旧东西)获取 DPI 的调用。
在我的 DPI 意识战斗中,我使用以下代码:
fontStruct.lfHeight = 0 - MulDiv( height, GetWindowDpi( window ), 72 );
GetWindowDpi
是一个包装,调用GetDpiForWindow
为Windows 10或GetDpiForMonitor
为Windows 8.1或使用炒冷饭GetDeviceCaps(hDC, LOGPIXELSY)
的Windows 7。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.