# Глава 3. Рендеринг текста Библиотека `pixels` может не только вызывать `putPixel`: она также предлагает минимальную процедуру `drawText` для вывода букв и слов на экран. Ее объявление выглядит так: ```nim proc drawText(x, y: int; text: string; size: int; color: Color) ``` Мы передаем в процедуру следующие параметры: ## x и y Координаты нижнего левого угла текста, который мы хотим нарисовать ## text Текст, который мы хотим отобразить. Он имеет тип `string`. Мы рассмотрим строки более подробно в следующей главе, а пока достаточно знать, что `string` - это _встроенный_ тип, который примерно представляет собой последовательность символов `char`, и строковый литерал может быть заключен в двойные кавычки, например "примерно вот так". ## size Это высота текста в пикселях. ## color Как и в процедуре `putPixel`, мы можем задать цвет рисуемого текста. Самый простой способ вызвать эту процедуру: ```nim drawText 30, 40, "Привет из Nim!", 10, Yellow ``` Обратите внимание, что мы не использовали скобки после названия функции для обозначения списка аргументов. Это эквивалентно `drawText(10, 10, "Привет из Nim!", Yellow)`, можно использовать любой стиль. Для следующего, более интересного примера нам понадобится оператор доллара `$`, который может преобразовывать многие типы данных в их строковое представление, и оператор конкатенации `&`, который объединяет («конкатенирует») две строки в одну: ```nim $12 == "12" # конвертирует целое ччисло в строку "abc" & "def" == "abcdef" # объединяет две строки в одну ``` В следующем примере выводится 3 строки текста: ```nim 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`, для каждой итерации цикла.