HTML Academy · Урок

Текст и изображения на canvas

Выводите строки текста и рисуйте изображения на canvas

Урок 3 из 413 шагов

«Текст и изображения на canvas» — бесплатный урок HTML Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения HTML Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс HTML Academy содержит 4 уроков всего.

Рисование текста

Задайте шрифт: ctx.font = "bold 24px sans-serif". Рисуйте текст: ctx.fillText("Hello", x, y) или ctx.strokeText("Hello", x, y). Координата y указывает на базовую линию текста — добавьте над ней высоту верхних выносных элементов, чтобы правильно разместить текст внутри ограничивающего прямоугольника.

Выравнивание текста

ctx.textAlign управляет горизонтальным выравниванием: "left" (по умолчанию), "center", "right". ctx.textBaseline управляет вертикальным выравниванием относительно y: "top", "middle", "alphabetic" (по умолчанию), "bottom". Для центрирования текста задайте значения "center" и "middle".

measureText для компоновки

ctx.measureText("text") возвращает объект TextMetrics с шириной и метриками шрифта. Используйте его для динамического вычисления позиций текста: для центрирования текста в прямоугольнике, переноса текста по максимальной ширине или выравнивания подписей по правому краю рядом с точками данных.

Перенос текста

В Canvas нет встроенного переноса текста. Реализуйте его самостоятельно: измеряйте ширину слов, накапливайте их, пока ширина не превысит maxWidth, затем начинайте новую строку через интервалы lineHeight. Это распространённая вспомогательная функция в библиотеках отрисовки на холсте.

Рисование изображений

ctx.drawImage(image, dx, dy) рисует элемент изображения HTML, элемент холста HTML или элемент видео HTML в точке (dx, dy). Сначала загрузите изображение, а рисование выполняйте в его обработчике загрузки, чтобы перед рисованием пиксели уже были доступны.

const img = new Image();
img.onload = () => ctx.drawImage(img, 0, 0);
img.src = "photo.jpg";

Масштабирование изображений

ctx.drawImage(image, dx, dy, dw, dh) масштабирует изображение до размеров dw × dh. Соотношение сторон автоматически не сохраняется — вычисляйте размеры вручную. Чтобы сохранить соотношение сторон: dw = img.width * scale; dh = img.height * scale.

Обрезка изображений

Вариант drawImage с девятью аргументами: ctx.drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh). Исходный прямоугольник (sx, sy, sw, sh) задаёт область обрезки изображения; конечный прямоугольник (dx, dy, dw, dh) размещает и масштабирует обрезанную область на холсте.

Сглаживание изображений

ctx.imageSmoothingEnabled = false отключает билинейную интерполяцию при масштабировании изображений. Используйте это для пиксельной графики, когда требуется чёткое масштабирование без сглаживания. Для фотографий оставляйте сглаживание включённым (это значение по умолчанию), поскольку при нём масштабирование выглядит лучше.

Холст как источник изображения

Передавайте холст в drawImage как источник, чтобы отрисовать один холст на другом. Это позволяет выполнять отрисовку вне экрана: рисуйте сложные композиции на скрытом холсте, а затем одной операцией на каждом кадре переносите этот холст на видимый.

globalAlpha и композиция

ctx.globalAlpha (от 0 до 1) задаёт единообразную прозрачность для всех последующих операций рисования. ctx.globalCompositeOperation управляет смешиванием новых рисунков с уже существующими пикселями: "source-over" (по умолчанию), "multiply", "screen", "destination-out" (стирание) и другие режимы.

toDataURL для экспорта

canvas.toDataURL("image/png") экспортирует холст как URL данных PNG в кодировке base64. Используйте это для загрузки по инициативе пользователя: создайте ссылку, задайте её href равным URL данных, а атрибуту загрузки — имя файла, затем программно нажмите на ссылку.

Проверка знаний

На что влияет ctx.textBaseline = "middle" при рисовании текста?

Итоги

Для отображения текста на холсте используются ctx.font, fillText/strokeText, textAlign и textBaseline, а для вычислений при компоновке — measureText. Рисование изображений через drawImage поддерживает масштабирование и обрезку; globalAlpha и globalCompositeOperation управляют смешиванием. toDataURL экспортирует холст для загрузки или дальнейшего использования.

Можно начать бесплатно

Изучай HTML с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
40
Уроки
159

Часто задаваемые вопросы

Урок «Текст и изображения на canvas» бесплатный?

Да — полный текст урока «Текст и изображения на canvas» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс HTML Academy, подпишись на CoddyKit PRO. Курс HTML Academy содержит 4 уроков всего.

Чему я научусь в уроке «Текст и изображения на canvas»?

Выводите строки текста и рисуйте изображения на canvas Ты практикуешь HTML Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать HTML Academy?

Предыдущий опыт не требуется. HTML Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Текст и изображения на canvas»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке HTML Academy?

Да. Каждый урок HTML Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Настройка canvas и двумерного контекста
  2. Рисование прямоугольников и контуров
  3. Текст и изображения на canvas
  4. Анимация с помощью requestAnimationFrame
← Назад к HTML Academy