在我的程序中,我需要生成一个位图,其中所有数字字符(0..9)从左到右排列,加上一些其他字符。
用户将从 UI 中选择:
- 所需的字体,和
- 所需的字符高度(以像素为单位)。
所以我想创建一个位图,然后从这个位图中创建一个图形,然后将数字一个一个地绘制到这个位图中,然后将它保存到磁盘。
我在几个小时内无法弄清楚:如何创建具有正确大小的字体,以便数字“0”具有用户给定的高度?
我使用了 Font 构造函数中的所有参数,使用 StringFormat 的属性,使用 MeasureString/MeasureText/MeasureCharacterRanges,我尝试通过 P/Invoke(具有正/负 nHeight)使用本机 CreateFont() 创建字体。所有称为“大小”或“高度”的参数似乎都表示某个比“0”大得多的假设字符的大小。
我确实阅读了关于线高、em 高度、上升、下降等的理论。似乎没有关于角色真实高度的概念,没有填充和间距等
我的问题又是:给定“0”字形的字体名称和所需的像素高度,我如何创建一种字体来绘制具有所需高度的字形?
我将不胜感激任何指导。
稍后编辑关于我的项目的更多细节:它是一个带有大显示屏的嵌入式设备,我需要为设计人员提供一种简单的方法来生成和尝试他们喜欢的位图字体。生成此类位图字体的 Windows 工具对我来说似乎是一个很好的解决方案。