Прорисовка текста с помощью спрайта в XNA 4.0

1334089262_designer

Для того что бы хоть чуть-чуть «прошарится» в XNA я сначала решил разобрать одну статью из официальной справки. В данной статье, как вы поняли из названия мы будем выводить текст на экран. Результат.

Добавление спрайта шрифта и прорисовка

  1. Кликните правой кнопкой миши на Контент проекта (Content project) в Обозревателе Решений (Solution Explorer) кликните Добавить (Add), и затем кликните Создать элемент (New Item).
  2. В Меню Добавления Нового Элемента (Add New Item Dialog Box), кликните Спрайт Шрифт(Sprite Font).Вы наверно уже заметили что здесь удобно изменить имя с «SpriteFont1″ на имя шрифта (сохраняя формат файла .spritefont). Данное имя идентифицирует шрифт, когда он будет установлен на вашем компьютере, например, «Courier New», или «Times New Roman.» Когда вы ссылаетесь на шрифт в вашем коде, вы должны использовать это имя чтобы подключить шрифт.XNA Game Studio создает новый .spritefont файл для фашего шрифта и открывает его.
  3. Если вы не назвали файл именем шрифта, впишите имя нужного шрифта в FontName элементе.Опять же, это не имя файла шрифта, а имя, которое идентифицирует шрифт, если он будет установлен на вашем компьютере. Вы можете использовать папку с шрифтами в Контрольной Панели (Control Panel) чтобы видеть имена всех шрифтов установленых на вашем компьютере и устоновить новые. Контент источника информации поддерживает те же шрифты что и класс System.Drawing.Font, включая настоящие шрифты, но не растровые (.fon) шрифты. Вы наверно тоже считаете что удобнее сохранять новый .spritefont файл используя имя шрифта. Когда вы ссылаетесь на шрифт в коде, вы должны использовать это имя чтобы прикрепить шрифт.
  4. В случае необходимости, измените Размер (Size) шрифта к тому размеру который вы хотите.
  5. В случае необходимости, измените Стиль (Style) шрифта на стиль шрифта для импорта.
  6. Вы можете задать RegularBoldItalic, или Bold, ItalicСтиль (Style) задавать с учетом регистра.
  7. Укажите пространство символов для импорта шрифта.

Пространство символов указывает какие символы будут использоваться в шрифте классом SpriteFont. Вы можете указать начальную и конечную области с помощью самих символов, или используя ихние десятичные значения с префиксом &#. Пространство символов по умолчанию включает в себя все символы между пробелом и тильдой(~), включительно.

Что бы нарисовать текст на экране

  1. Добавьте Sprite шрифт к вашему проекту, как описано выше.
  2. Создайте SpriteFont объект для инкапсуляции импортированого шрифта.
  3. Создайте SpriteBatch объект для прорисовки шрифта на экране.
  4. В вашем LoadContent методе, вызовите ContentManager.Load, укажите в качестве аргумента SpriteFont класс и имя импортированого шрифта.
  5. Создайте ваш SpriteBatch объект, передав в качестве аргумента GraphicsDevice.
SpriteFont Font1;
Vector2 FontPos;
protected override void LoadContent()
{
    // Создали новый SpriteBatch, который может быть использован для прорисовки текстур.
    spriteBatch = new SpriteBatch(GraphicsDevice);
    Font1 = Content.Load<SpriteFont>("Courier New");

    // TODO: Load your game content here
    FontPos = new Vector2(graphics.GraphicsDevice.Viewport.Width / 2,
        graphics.GraphicsDevice.Viewport.Height / 2);
}


  1. В вашем Draw методе, вызовите метод Begin как метод объекта SpriteBatch.
  2. При необходимости, установите источник вашего текста.Если вы хотите прорисовать ваш текст по центру, вы can find the center of the text by calling MeasureString and dividing the returned vector by 2.
  3. Вызовите метод функции DrawString для прорисовки выходного текста, указав объект SpriteFont для использования вашего шрифта.Все остальные аргументы процедуры DrawString производят такие же эффекты как и вызов функции SpriteBatch.Draw.
  4. Вызовите функцию SpriteBatch.End после того как текст прорисован.
    protected override void Draw(GameTime gameTime)
    {
        GraphicsDevice.Clear(Color.CornflowerBlue);
    
        spriteBatch.Begin();
    
        // Строка Hello World
        string output = "Hello World";
    
        // Отыскать центр строки
        Vector2 FontOrigin = Font1.MeasureString(output) / 2;
        // Прорисовка строки
        spriteBatch.DrawString(Font1, output, FontPos, Color.LightGreen,
            0, FontOrigin, 1.0f, SpriteEffects.None, 0.5f);
    
        spriteBatch.End();
        base.Draw(gameTime);
    }

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>