如何在XNA中绘制特殊字符?

时间:2012-11-06 01:31:42

标签: c# c#-4.0 xna xna-4.0 spritefont

我想通过使用方法在XNA中绘制特殊字符,如:“π,Ω,θ,ξ” SpriteBatch.DrawString(),但我在SpriteFont文件中说“字符不可用”。对此有什么解决方案吗?

1 个答案:

答案 0 :(得分:21)

你需要在你的spritefont中包含那些字符

在你的spritefont文件中,你需要为希腊字母设置另一个“区域”:

<CharacterRegions>
  <CharacterRegion><!-- Normal letters -->
    <Start>&#32;</Start>
    <End>&#126;</End>
  </CharacterRegion>
  <CharacterRegion><!-- Greek letters -->
    <Start>&#913;</Start>
    <End>&#969;</End>
  </CharacterRegion>
</CharacterRegions>

当你包含它时,你应该能够用那个spritefont显示那些字符:

Example usage of greek characters in spritefont


使用字符映射工具

找到这些字符所在的区域,请使用Character Map,这是All Programs -> Accessories -> System Tools中的一个不错的应用程序。

当你选择一个字符时,它会显示它的字符代码,例如omega(ω)是U + 03C9,它是0x03C9十六进制或969十进制。


定义字符区域的不同方法

有三种方法可以在SpriteFont文件中定义您的区域,它们与三种用XML编写字符的方式有关:

  • 十进制表示:即&#126; - 格式为&#nnnn;
  • 十六进制表示:即&#x7E; - 格式为&#xnnnn;
  • 实际角色:即~

这是用XML编写相同内容的三种方法,因此您可以使用不同的方法来定义区域。以上是地区的十进制表示。

这是十六进制表示,最容易从字符映射中获取:

enter image description here

最后,您可以使用实际字符来定义您的区域,然后通过从字符映射工具中的文本框中粘贴它们来获取这些区域:

enter image description here