SharpDX工具包:绘制文本

时间:2014-06-28 19:18:05

标签: c# xna directx toolkit sharpdx

我想在我的Toolkit游戏中使用以下代码绘制一些文本:

SpriteFont spriteFont;
Vector2 pointStringPosition = new Vector2(5, 5);
int intPoints = 0;
//...
Content.RootDirectory = "Content";
//...
spriteFont = Content.Load<SpriteFont>("Schrift.xml");
//...
spriteBatch.DrawString(spriteFont, intPoints.ToString(), pointStringPosition, Color.DarkOrange);

Schrift.xml位于Content文件夹中,构成了:

<?xml version="1.0" encoding="utf-8" ?>
<TkFont>
  <FontName>Arial</FontName>
  <Size>13</Size>
  <Spacing>0</Spacing>
  <LineSpacing>0</LineSpacing>
  <UseKerning>false</UseKerning>
  <Format>Auto</Format>
  <CharacterRegions>
    <CharacterRegion>
      <Start>32</Start>
      <End>127</End>
    </CharacterRegion>
  </CharacterRegions>
  <DefaultCharacter>32</DefaultCharacter>
  <Style>Regular</Style>
  <NoPremultiply>false</NoPremultiply>
</TkFont>

如果.csproj构成了这个:

<ToolkitFont Include="Content\Schrift.xml">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</ToolkitFont>

抛出AssetNotFoundException。

如果.csproj构成了这个:

<Content Include="Content\Schrift.xml">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>

它说:

  

注册的ContentReader类型   [SharpDX.Toolkit.Graphics.SpriteFontContentReader]无法加载   来自文件的[SharpDX.Toolkit.Graphics.SpriteFont]类型的内容   [Schrift.xml]。

如果.csproj构成了这个:

<ToolkitFont Include="Content\Schrift.xml">
      <Link>Content\Schrift.xml</Link>
</ToolkitFont>

我收到错误,因为Link元素无效。

有什么问题?或者使用SharpDX绘制文本有更好/更容易的机会吗?

2 个答案:

答案 0 :(得分:1)

SharpDX Toolkit不使用XNA文件格式,而是使用custom YAML format。查看samples,特别是SpriteFontApp

答案 1 :(得分:1)

我遇到了同样的问题,但这是因为我没有把Build Action放到&#34; TookitFont&#34;

所以在代码没有.xml扩展名

并在文件属性中:

  • 构建操作:ToolkitFont
  • 复制到输出目录:如果更新则复制

或者在.csproj文件中:

<ToolkitFont Include="Content\Arial16.xml">
  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</ToolkitFont>