一切都在标题中。我尝试创建自己的 OpenGL 字体系统,并且需要获取要包含在 Sprite 纹理中的每个字符的大小。 除了字符“&”(ascii 38)之外,一切都运行良好且准确。即使我更改字体,该字符的宽度也始终返回零。高度正好。
最奇怪的是,如果我尝试测量“&&”(Chr(38) & Chr(38))的串联,结果似乎不错! 我还没有检查相同字体的另一个范围中的相同代码点是否会产生相同的错误,所以我不知道解决方法“如果字符是“38”测试“38+38”上的大小是否会永远工作。
编辑: 对不起,我太傻了。我完全忘记说我在 VB.Net 下(但可以理解 C#)并且我使用 OpenGL 和 OpenTK 进行绑定(bind)。 TextRenderer 是 GDi+ 的一个类。我用它来创建我的字体纹理。这确实不是 OpenGL 问题。
最佳答案
& 在控制文本中使用来声明下一个字符是快捷键。例如,带有文本“E&xit”的控件会显示带有下划线“x”的“退出”,并且当用户按 Alt+X 时将激活。
要在测量中包含 & 符号,请使用:
TextRenderer.MeasureText(text, font, Size.Empty, TextFormatFlags.NoPrefix)
关于.net - TextRenderer.MeasureText 返回字符 "&"的 Width=0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7437856/