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

Hai*_*ieu 3 c# xna xna-4.0 c#-4.0 spritefont

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

nee*_*eKo 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>
Run Code Online (Sandbox Code Playgroud)

当您包含它时,您应该能够使用该spritefont显示这些字符:

spritefont中希腊字符的使用示例


使用字符映射工具

找到这些字符所在的区域,请使用字符映射,这是一个很好的应用程序All Programs -> Accessories -> System Tools.

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


定义字符区域的不同方式

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

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

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

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

在此输入图像描述

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

在此输入图像描述