четверг, 20 декабря 2012 г.

Рисование дополнительных символов XNA


При работе с XNA возникает необходимость использовать дополнительные символы которые не входят в стандартную "коробку" шрифта, например квадратный корень, степень, ну или русские символы, для этого приходится изменять SpriteFont, чтобы включить эти символы. 

Прежде всего, Вам нужно шрифт, который поддерживает эти символы. Самый простой способ проверить, есть ли они в шрифте, установите шрифт в папку шрифтов Windows, если он не входит в стандартные предустановленные шрифты.Для их просмотра нажмите Windows + R (для диалога запуска) и введите charmap нажмите Enter. Это создаст окно позволяющее выбрать шрифт и все символы, доступные для выбранного шрифта. В левом нижнем углу Вы уведите его код типа U+00B2, см. рисунок 1.



Рисунок 1. Таблица символов.

Вы должны использовать шрифт, поддерживающий данные символы. По умолчанию SpriteFont включать символы 32-126, который включает в себя буквы/цифры/символы. Если вы хотите дополнительные символы, такие как например степень двойки, Вам необходимо добавит его отдельно. Вот мой SpriteFont, который был изменен, чтобы включить его:

<?xml version="1.0" encoding="utf-8"?>
<XnaContent xmlns:Graphics="Microsoft.Xna.Framework.Content.Pipeline.Graphics">
<Asset Type="Graphics:FontDescription">
  <FontName>Arial</FontName>
  <Size>32</Size>
  <Spacing>2</Spacing>
  <Style>Bold</Style>
<CharacterRegions>
  <CharacterRegion>
    <Start>&#32;</Start>
      <End>>&#126;</End>
      </CharacterRegion>
< ! -- Символ квадратного корня, указывается в десятичной системе исчисления (U+00B2 == 0178)-->
    <CharacterRegion>
      <Start>&#0178;</Start>
      <End>&#0178;</End>
    </CharacterRegion>
  </CharacterRegions>
</Asset>
</XnaContent>

Теперь когда Мы изменили шрифт, выведем результат на экран:

spriteBatch.DrawString(spriteFont, "6²", Vector2.Zero, Color.Red);



Комментариев нет:

Отправить комментарий