【发布时间】:2011-04-22 10:17:39
【问题描述】:
我需要使用不同的 spritefont 字体大小,我必须为每个大小创建新的 spritefont 吗?
【问题讨论】:
标签: xna
我需要使用不同的 spritefont 字体大小,我必须为每个大小创建新的 spritefont 吗?
【问题讨论】:
标签: xna
基本上是的。
SpriteBatch.DrawString 中的 overload 为您提供了缩放文本的选项。
但是,这样做的主要缺点是,当您放大文本时,您的文本会变得像素化。如果您从较高的分辨率开始并按比例缩小,您将开始获得人工制品,因为您将获得较小的尺寸。
因此,如果您有固定数量的大小,您应该创建多个版本的精灵字体,以您需要的不同大小。
如果您想要具有锐利边缘的连续可缩放文本,您或许可以考虑使用矢量字体。 Nuclex 框架有some code to do that。
【讨论】:
您还可以将字体设置为您需要的最大尺寸并从那里缩小。
【讨论】:
假设您使用的SpriteFont 名为x.spritefont。
执行以下操作为每个尺寸创建新的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;
}
【讨论】: