GetTextExtentPoint32获取字体大小的问题
最近在写调试器的字体. 遇到了个很奇怪的问题.明明字体应该很漂亮, 但是画上去的总是很难看. 如下图:
重点看左下角数据区的HEX区域. 显示的数据全部挤在一起.
实际上这是因为字节间距的问题. 为了让字体显示适应各种字体,特意在程序中动态获取字体的大小.
但在实际程序中,获取到的大小和想像中的完全不一样.
比如下例代码:
SIZE tagSize_ = {0};
ODplugin_UI_GetDCSize(hDbBuff, tagSize_, _TEXT(" "));
ODplugin_UI_GetDCSize(hDbBuff, tagSize_, _TEXT("1"));
ODplugin_UI_GetDCSize(hDbBuff, tagSize_, _TEXT("a"));
ODplugin_UI_GetDCSize(hDbBuff, tagSize_, _TEXT("A"));
ODplugin_UI_GetDCSize(hDbBuff, tagSize_, _TEXT("w"));
ODplugin_UI_GetDCSize(hDbBuff, tagSize_, _TEXT("W"));
ODplugin_UI_GetDCSize(hDbBuff, tagSize_, _TEXT("Q"));
正常情况我的理解是同一个字体,同一个环境下, 1个字节长度理应是一样的.如下图:
但实际却不一定的. 不同的字体, 同样是1字节,获取的长度未必一样.如下图:
在我随机找的几个字母测试, 其中 "W" 是最宽的. 我之前都是用的 " "空格, 在有的字体中, 空格是最窄的.
以后在写类似的代码, 我就用 "W" 做为1字节来获取, 不会再用空格了.
页:
[1]