how to change fontsize during the game in XNA?

后端 未结 3 1790
心在旅途
心在旅途 2021-02-20 16:55

I need to use different fontsize of spritefont, Have to I create new spritefont for the each size?

相关标签:
3条回答
  • 2021-02-20 17:35

    Basically yes.

    There is an overload of SpriteBatch.DrawString that gives you an option to scale your text.

    However the major downside to this is that your text will become pixelated as you scale it up. If you start at a higher resolution and scale down you will start to get artefacts as you get to smaller sizes.

    So if you have a fixed number of sizes, you should create multiple versions of your sprite font at the different sizes you require.

    If you want continuously scalable text with sharp edges, you could perhaps look into vector fonts. The Nuclex Framework has some code to do that.

    0 讨论(0)
  • 2021-02-20 17:48

    Suppose the SpriteFont you are using is named x.spritefont. Do the following to create new SpriteFont for each size.

    • Open the x.spritefont file from solution explorer.
    • Go to the tag and edit it to your desired font size.
    • To make multiple size font, duplicate the file and change the tags accordingly. Rename the files with size appended at last for easy remembering.

    Now create multiple instances of SpriteFont and load them accordingly.

    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 
    }
    

    to dynamically change fontSize, do the following:

    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;
    }
    
    0 讨论(0)
  • 2021-02-20 17:49

    You can also make your font at the largest size you need and scale down from there.

    0 讨论(0)
提交回复
热议问题