我想通过使用方法在XNA中绘制特殊字符,例如:“π,Ω,θ,ξ”SpriteBatch.DrawString() ,但我收到一个异常,说这些 字符在 SpriteFont 文件中不可用 。有什么解决办法吗?

最佳答案

您需要 在您的 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 显示这些字符:



使用字符映射工具

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

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

定义字符区域的不同方式

有 3 种方法可以在 SpriteFont 文件中定义区域,它们与在 XML 中编写字符的三种方法有关:
  • 十进制表示:即 &#126; - 格式为 &#nnnn;
  • 十六进制表示:即 &#x7E; - 格式为 &#xnnnn;
  • 实际字符:即 ~

  • 这是用 XML 编写相同内容的三种方式,因此您可以使用不同的方式来定义您的区域。上面是区域的小数表示。

    这是十六进制表示,这是从字符映射中最容易得到的:

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

    关于c# - 如何在 XNA 中绘制特殊字符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13243130/

    10-17 02:24