我想通过使用方法在 XNA 中绘制特殊字符,例如:“π,Ω,θ,ξ”
SpriteBatch.DrawString()
,但我得到一个异常,说这些字符在 SpriteFont 文件中不可用。有什么解决办法吗?
问问题
5144 次
1 回答
23
您需要在 spritefont中包含这些字符。
在您的 spritefont 文件中,您需要为希腊字母设置另一个“区域”:
<CharacterRegions>
<CharacterRegion><!-- Normal letters -->
<Start> </Start>
<End>~</End>
</CharacterRegion>
<CharacterRegion><!-- Greek letters -->
<Start>Α</Start>
<End>ω</End>
</CharacterRegion>
</CharacterRegions>
当您包含它时,您应该能够使用该 spritefont 显示这些字符:
使用字符映射工具
要查找这些字符所在的区域,请使用Character Map,这是一个很好的应用程序All Programs -> Accessories -> System Tools
。
当您选择一个字符时,它会显示它的字符代码,例如 omega (ω) 是 U+03C9,即 0x03C9 十六进制或 969 十进制。
定义字符区域的不同方法
有 3 种方法可以在 SpriteFont 文件中定义区域,它们与在 XML 中写入字符的三种方法有关:
- 十进制表示:即
~
- 格式为&#nnnn;
- 十六进制表示:ie
~
- 格式为&#xnnnn;
- 实际性格:即
~
这是用 XML 编写相同内容的三种方式,因此您可以使用不同的方式来定义您的区域。以上是区域的十进制表示。
这是十六进制表示,这是最容易从字符映射中获得的:
最后,您可以使用实际字符来定义您的区域,您可以通过从字符映射工具的文本框中复制粘贴它们来获得它们:
于 2012-11-06T11:40:50.033 回答