C# SharpDX工具包:绘制文本

C# SharpDX工具包:绘制文本,c#,xna,directx,toolkit,sharpdx,C#,Xna,Directx,Toolkit,Sharpdx,我想用以下代码在我的工具箱游戏中绘制一些文本: SpriteFont spriteFont; Vector2 pointStringPosition = new Vector2(5, 5); int intPoints = 0; //... Content.RootDirectory = "Content"; //... spriteFont = Content.Load<SpriteFont>("Schrift.xml"); //... spriteBatch.DrawString

我想用以下代码在我的工具箱游戏中绘制一些文本:

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);
SpriteFont-SpriteFont;
Vector2 pointStringPosition=新的Vector2(5,5);
积分=0;
//...
Content.RootDirectory=“Content”;
//...
spriteFont=Content.Load(“Schrift.xml”);
//...
spriteBatch.DrawString(spriteFont,intPoints.ToString(),pointStringPosition,Color.DarkOrange);
Schrift.xml位于内容文件夹中,由以下内容组成:

<?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>
<ToolkitFont Include="Content\Schrift.xml">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</ToolkitFont>
<Content Include="Content\Schrift.xml">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<ToolkitFont Include="Content\Schrift.xml">
      <Link>Content\Schrift.xml</Link>
</ToolkitFont>

Arial
13
0
0
假的
自动的
32
127
32
有规律的
假的
如果.csproj构成以下内容:

<?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>
<ToolkitFont Include="Content\Schrift.xml">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</ToolkitFont>
<Content Include="Content\Schrift.xml">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<ToolkitFont Include="Content\Schrift.xml">
      <Link>Content\Schrift.xml</Link>
</ToolkitFont>

保存最新
它抛出AssetNotFoundException

如果.csproj构成以下内容:

<?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>
<ToolkitFont Include="Content\Schrift.xml">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</ToolkitFont>
<Content Include="Content\Schrift.xml">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<ToolkitFont Include="Content\Schrift.xml">
      <Link>Content\Schrift.xml</Link>
</ToolkitFont>

保存最新
它说:

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

如果.csproj构成以下内容:

<?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>
<ToolkitFont Include="Content\Schrift.xml">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</ToolkitFont>
<Content Include="Content\Schrift.xml">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<ToolkitFont Include="Content\Schrift.xml">
      <Link>Content\Schrift.xml</Link>
</ToolkitFont>

Content\Schrift.xml
我得到一个错误,因为Link元素不工作


怎么了?或者,是否有更好/更容易的机会使用SharpDX绘制文本?

SharpDX工具包不使用XNA文件格式,而是使用。检查,特别是

我也有同样的问题,但这是因为我没有将构建操作设置为“TookitFont”

因此,在没有.xml扩展名的代码中

在文件属性中:

  • 构建操作:ToolkitFont
  • 复制到输出目录:如果较新,则复制
或在.csproj文件中:

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

保存最新

我已经添加并使用了这个,但是我得到了相同的错误。你不能直接加载文件。它需要在编译时通过spritefont()上的“ToolkitFont”操作进行处理。看看样品。谢谢你的许多exsamples,但它不起作用。我在问题中看到了什么(我已经更新了)。你真的看过SharpDX样本了吗?没有一个示例正在加载xml扩展名
Content.Load(“Schrift.xml”)但只是
Content.Load(“Schrift”)我知道,每个人都说没有结尾,但对我来说,它只适用于结尾。Texture2D也是这样工作的(
text2SnakeBody=Content.Load(“snake.png”);
)。