W3docs

Справочник Canvas

Элемент HTML5 <canvas> используется для рисования графики через скрипты (JavaScript). Свойства и методы для рисования на canvas.

Элемент HTML5 <canvas> используется для рисования графики через скрипты (обычно JavaScript). Сам по себе элемент <canvas> — это просто пустой контейнер: рисование выполняется из скрипта.

Чтобы получить контекст рисования, вызовите метод getContext('2d') элемента. Он возвращает объект CanvasRenderingContext2D:

const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d'); // a CanvasRenderingContext2D
ctx.fillStyle = 'green';
ctx.fillRect(10, 10, 100, 80);

Почти все свойства и методы на этой странице принадлежат объекту 2D-контекста (ctx выше), а не элементу <canvas>. Исключения — getContext() и toDataURL(), которые принадлежат самому элементу <canvas>, а также свойства width/height/data в разделе Пиксельные операции, относящиеся к объектам ImageData. Они сгруппированы в отдельных разделах ниже.

Пошаговые руководства: Введение в Canvas, рисование фигур, координаты, текст и градиенты.

Цвета, стили и тени

СвойствоОписание
fillStyleЗадаёт или возвращает цвет, градиент или паттерн для заливки фигур.
strokeStyleЗадаёт или возвращает цвет, градиент или паттерн для контуров фигур.
shadowColorЗадаёт или возвращает цвет теней.
shadowBlurЗадаёт или возвращает уровень размытия теней.
shadowOffsetXЗадаёт или возвращает смещение тени по оси X.
shadowOffsetYЗадаёт или возвращает смещение тени по оси Y.
МетодОписание
createLinearGradient()Создаёт линейный градиент для использования на canvas.
createPattern()Повторяет заданный элемент в указанном направлении.
createRadialGradient()Создаёт круговой/радиальный градиент для использования на canvas.
addColorStop()Определяет цвета и позиции остановок в объекте градиента.

Смотрите руководство Canvas градиенты с рабочими примерами.

Стили линий

СвойствоОписание
lineCapЗадаёт или возвращает стиль завершения линии.
lineJoinЗадаёт или возвращает тип углов на стыке линий.
lineWidthЗадаёт или возвращает ширину текущей линии.
miterLimitЗадаёт или возвращает максимальную длину скоса.
lineDashOffsetЗадаёт или возвращает смещение пунктирного узора линии.
МетодОписание
getLineDash()Возвращает текущий пунктирный узор линии в виде массива чисел.
setLineDash()Задаёт пунктирный узор линии из массива чисел (например, [5, 3]).

Прямоугольники

МетодОписание
rect()Создаёт прямоугольники.
fillRect()Рисует залитые прямоугольники.
strokeRect()Рисует контуры прямоугольников.
clearRect()Очищает заданные пиксели в пределах указанного прямоугольника.

Пути

МетодОписание
fill()Заливает текущий подпуть (подпути) текущим fillStyle.
stroke()Обводит текущий подпуть (подпути) текущим strokeStyle.
beginPath()Начинает новый путь или сбрасывает текущий.
moveTo()Перемещает путь в заданную точку на canvas без рисования линии.
closePath()Добавляет путь от текущей точки обратно к начальной.
lineTo()Добавляет линию к текущему подпути.
clip()Создаёт область отсечения из текущего пути.
quadraticCurveTo()Добавляет квадратичную кривую Безье.
bezierCurveTo()Добавляет кубическую кривую Безье.
arc()Добавляет дугу/кривую для создания окружностей или их частей.
arcTo()Добавляет дугу/кривую между двумя касательными.
ellipse()Добавляет эллиптическую дугу к пути.
isPointInPath()Определяет, находится ли заданная точка внутри текущего пути.

Трансформации

МетодОписание
scale()Масштабирует текущий рисунок (увеличивает или уменьшает).
rotate()Поворачивает текущий рисунок.
translate()Смещает систему координат canvas.
transform()Применяет матрицу преобразования к canvas.
setTransform()Аналогичен transform(). Позволяет наклонять, масштабировать и перемещать canvas.
resetTransform()Сбрасывает текущее преобразование до единичной матрицы.

Смотрите Canvas координаты о том, как матрица преобразования сопоставляет позиции рисования с пикселями.

Текст

СвойствоОписание
fontЗадаёт внешний вид текста, рисуемого на canvas.
textAlignЗадаёт выравнивание текста, рисуемого на canvas.
textBaselineЗадаёт вертикальное выравнивание текста, рисуемого на canvas.
directionЗадаёт или возвращает направление текста (ltr, rtl или inherit).
МетодОписание
fillText()Добавляет текст на canvas.
strokeText()Добавляет текст с контуром на canvas.
measureText()Измеряет ширину текста.

Смотрите руководство Canvas текст с полными примерами.

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

СвойствоОписание
imageSmoothingEnabledЗадаёт или возвращает, сглаживаются ли масштабированные изображения (true) или отображаются попиксельно (false).
МетодОписание
drawImage()Рисует изображение, видео или canvas на canvas.

Пиксельные операции

Приведённые ниже свойства принадлежат объекту ImageData, возвращаемому методами createImageData() / getImageData(), а не элементу <canvas> или контексту.

Свойство ImageDataОписание
widthВозвращает ширину объекта ImageData в пикселях.
heightВозвращает высоту объекта ImageData в пикселях.
dataВозвращает Uint8ClampedArray, содержащий RGBA-данные пикселей.
МетодОписание
createImageData()Создаёт новый объект ImageData.
getImageData()Возвращает объект ImageData, копирующий пиксельные данные указанного прямоугольника.
putImageData()Помещает данные изображения из объекта ImageData на canvas.

Компоновка

СвойствоОписание
globalAlphaЗадаёт или возвращает текущее значение прозрачности/альфа-канала.
globalCompositeOperationЗадаёт или возвращает тип операции компоновки при рисовании нового изображения.
filterЗадаёт или возвращает CSS-фильтр, применяемый при рисовании (например, blur(4px), grayscale(1)).

Состояние canvas

Эти методы принадлежат 2D-контексту и позволяют сохранять и восстанавливать полное состояние рисования (стили, преобразования, область отсечения) в виде стека.

МетодОписание
save()Помещает текущее состояние контекста в стек состояний.
restore()Извлекает последнее сохранённое состояние, восстанавливая стили и преобразования.

Элемент <canvas>

Следующие элементы принадлежат самому элементу <canvas>, а не 2D-контексту.

ЭлементОписание
getContext()Возвращает контекст рисования для canvas — передайте '2d' для получения CanvasRenderingContext2D.
toDataURL()Возвращает data URL (изображение в base64) содержимого canvas, например 'image/png'.

Практика

Практика
Что делает метод getContext('2d') в HTML5 Canvas?
Что делает метод getContext('2d') в HTML5 Canvas?
Was this page helpful?