如何在XNA游戏中更改fontsize?

时间:2011-04-22 10:17:40

标签: xna

我需要使用不同的spritefont字体大小,我必须为每个大小创建新的spritefont吗?

3 个答案:

答案 0 :(得分:22)

基本上是的。

SpriteBatch.DrawString {{1}}可让您选择缩放文字。

然而,这方面的主要缺点是,在扩展时,您的文本将变为像素化。如果你以更高的分辨率和缩小比例开始,你会在你变小的时候开始获得人工制品。

因此,如果你有一定数量的尺寸,你应该以你需要的不同尺寸创建多个版本的精灵字体。

如果你想要带有锐边的连续可缩放文本,你​​可以查看矢量字体。 Nuclex框架有overload

答案 1 :(得分:3)

您还可以将字体设置为所需的最大尺寸,然后从那里缩小。

答案 2 :(得分:3)

假设您使用的SpriteFont名为x.spritefont。 执行以下操作为每个尺寸创建新的SpriteFont

  • 从解决方案资源管理器中打开x.spritefont文件。
  • 转到标记并将其编辑为所需的字体大小。
  • 要制作多尺寸字体,请复制文件并更改 标签相应。重命名最后附加大小的文件 容易记住。

现在创建SpriteFont的多个实例并相应地加载它们。

SpriteFont sf_s10;
SpriteFont sf_s14;

protected override void LoadContent()
{
  sf_s10 = Content.Load<SpriteFont>("x_10");
  sf_s14 = Content.Load<SpriteFont>("x_14");
  //OTHER LOADS 
}

要动态更改fontSize,请执行以下操作:

SpriteFont current_font;

protected override void Update(GameTime gameTime)
{
  if(/*SOME_CONDITION_TO_DECREASE_SIZE*/)
    current_font=sf_s10;

  if(/*SOME_CONDITION_TO_INCREASE_SIZE*/)
    current_font=sf_s14;
}