【问题标题】:how to change fontsize during the game in XNA?如何在 XNA 游戏中更改字体大小?
【发布时间】:2011-04-22 10:17:39
【问题描述】:

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

【问题讨论】:

    标签: xna


    【解决方案1】:

    基本上是的。

    SpriteBatch.DrawString 中的 overload 为您提供了缩放文本的选项。

    但是,这样做的主要缺点是,当您放大文本时,您的文本会变得像素化。如果您从较高的分辨率开始并按比例缩小,您将开始获得人工制品,因为您将获得较小的尺寸。

    因此,如果您有固定数量的大小,您应该创建多个版本的精灵字体,以您需要的不同大小。

    如果您想要具有锐利边缘的连续可缩放文本,您或许可以考虑使用矢量字体。 Nuclex 框架有some code to do that

    【讨论】:

      【解决方案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;
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-12-23
          • 1970-01-01
          • 2015-02-03
          • 2013-05-23
          • 2019-11-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多