how to change fontsize during the game in XNA?
I need to u开发者_运维百科se different fontsize of spritefont, Have to I create new spritefont for the each size?
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.
You can also make your font at the largest size you need and scale down from there.
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;
}
精彩评论