ch03.md 3.1 KB

Глава 3. Рендеринг текста

Библиотека pixels может не только вызывать putPixel: она также предлагает минимальную процедуру drawText для вывода букв и слов на экран. Ее объявление выглядит так:

  proc drawText(x, y: int; text: string; size: int; color: Color)

Мы передаем в процедуру следующие параметры:

x и y

Координаты нижнего левого угла текста, который мы хотим нарисовать

text

Текст, который мы хотим отобразить. Он имеет тип string. Мы рассмотрим строки более подробно в следующей главе, а пока достаточно знать, что string - это встроенный тип, который примерно представляет собой последовательность символов char, и строковый литерал может быть заключен в двойные кавычки, например "примерно вот так".

size

Это высота текста в пикселях.

color

Как и в процедуре putPixel, мы можем задать цвет рисуемого текста.

Самый простой способ вызвать эту процедуру:

  drawText 30, 40, "Привет из Nim!", 10, Yellow

Обратите внимание, что мы не использовали скобки после названия функции для обозначения списка аргументов. Это эквивалентно drawText(10, 10, "Привет из Nim!", Yellow), можно использовать любой стиль.

Для следующего, более интересного примера нам понадобится оператор доллара $, который может преобразовывать многие типы данных в их строковое представление, и оператор конкатенации &, который объединяет («конкатенирует») две строки в одну:

$12 == "12"   # конвертирует целое ччисло в строку
"abc" & "def" == "abcdef" # объединяет две строки в одну

В следующем примере выводится 3 строки текста:

 for i in 1..3:
   let texttodraw = "Добро пожаловать в Nim " & $i & " раз!" # 1
   drawtext 10, i*10, texttodraw, 8, Yellow # 2
  • 1 Создает строку (объединенную из трех отдельных строк) и присваивает ее локальной переменной textToDraw.
  • 2 Отображает текст в позиции (10, i*10), где i — одно из чисел в диапазоне 1..3, для каждой итерации цикла.