как изменить размер шрифта во время игры в XNA? - PullRequest
6 голосов
/ 22 апреля 2011

Мне нужно использовать разные размеры шрифта spritefont. Нужно ли создавать новый spritefont для каждого размера?

Ответы [ 3 ]

23 голосов
/ 22 апреля 2011

В основном да.

Существует перегрузка из SpriteBatch.DrawString, которая дает вам возможность масштабировать текст.

Однако основным недостатком этого является то, что ваш текст будет пикселизироваться по мере его увеличения. Если вы начнете с более высокого разрешения и уменьшите масштаб, вы начнете получать артефакты при уменьшении размеров.

Так что, если у вас фиксированное количество размеров, вы должны создать несколько версий шрифта спрайта с разными размерами, которые вам требуются.

Если вы хотите непрерывно масштабируемый текст с острыми краями, возможно, вы можете использовать векторные шрифты. Nuclex Framework имеет некоторый код для этого .

3 голосов
/ 15 сентября 2013

Предположим, что 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;
}
3 голосов
/ 22 апреля 2011

Вы также можете сделать свой шрифт с самым большим размером, который вам нужен, и уменьшить его оттуда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...