Spec-Zone.ru › Web APIs

CanvasRenderingContext2D

Базовая поддержка Широко доступна *

Эта функция хорошо отработана и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.

* Некоторые части этой функции могут иметь различный уровень поддержки.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Интерфейс CanvasRenderingContext2D, являющийся частью API холста, предоставляет контекст 2D рендеринга для области рисования элемента <canvas>. Он используется для рисования фигур, текста, изображений и других объектов.

Свойства и методы интерфейса описаны в справочной части этой страницы. Учебник по холсту также содержит более подробные объяснения, примеры и ресурсы.

Для OffscreenCanvas существует аналогичный интерфейс, который предоставляет контекст рендеринга. Контекст офскрин рендеринга наследует большинство свойств и методов CanvasRenderingContext2D и подробно описан на странице справки OffscreenCanvasRenderingContext2D.

Базовый пример

Для получения экземпляра CanvasRenderingContext2D, необходимо сначала иметь HTML-элемент <canvas> для работы:

<canvas id="my-house" width="300" height="300"></canvas>

Для получения контекста 2D рендеринга холста вызовите getContext() на элементе <canvas>, передав '2d' в качестве аргумента:

const canvas = document.getElementById("my-house");
const ctx = canvas.getContext("2d");

Имея контекст, вы можете рисовать все, что захотите. Этот код рисует дом:

// Set line width
ctx.lineWidth = 10;

// Wall
ctx.strokeRect(75, 140, 150, 110);

// Door
ctx.fillRect(130, 190, 40, 60);

// Roof
ctx.beginPath();
ctx.moveTo(50, 140);
ctx.lineTo(150, 60);
ctx.lineTo(250, 140);
ctx.closePath();
ctx.stroke();

Результат рисования выглядит следующим образом:

Справочник

Контекст

CanvasRenderingContext2D.isContextLost()

Возвращает true , если контекст рендеринга был утерян.

Рисование прямоугольников

Есть три метода, которые сразу рисуют прямоугольники на холсте.

CanvasRenderingContext2D.clearRect()

Устанавливает все пиксели в прямоугольнике, определенном начальной точкой (x, y) и размером (ширина, высота), в прозрачный черный цвет, стирает ранее нарисованный контент.

CanvasRenderingContext2D.fillRect()

Рисует заполненный прямоугольник в позиции (x, y), размер которого определяется значениями ширина и высота.

CanvasRenderingContext2D.strokeRect()

Рисует прямоугольник с начальной точкой (x, y), шириной w и высотой h на холсте, используя текущий стиль обводки.

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

Следующие методы рисуют текст. Также см. объект TextMetrics для свойств текста.

CanvasRenderingContext2D.fillText()

Рисует (заполняет) заданный текст в заданной позиции (x, y).

CanvasRenderingContext2D.strokeText()

Рисует (обводит) заданный текст в заданной позиции (x, y).

CanvasRenderingContext2D.measureText()

Возвращает объект TextMetrics.

Стили линий

Следующие методы и свойства управляют тем, как рисуются линии.

CanvasRenderingContext2D.lineWidth

Ширина линий. По умолчанию 1.0.

CanvasRenderingContext2D.lineCap

Тип окончаний линий. Возможные значения: butt (по умолчанию), round, square.

CanvasRenderingContext2D.lineJoin

Определяет тип углов, где встречаются две линии. Возможные значения: round, bevel, miter (по умолчанию).

CanvasRenderingContext2D.miterLimit

Коэффициент ограничения скругления. По умолчанию 10.

CanvasRenderingContext2D.getLineDash()

Возвращает текущий массив пунктира линий, содержащий четное количество неотрицательных чисел.

CanvasRenderingContext2D.setLineDash()

Устанавливает текущий шаблон пунктира линий.

CanvasRenderingContext2D.lineDashOffset

Указывает, где начать массив пунктира на линии.

Стили текста

Следующие свойства управляют расположением текста.

CanvasRenderingContext2D.font

Настройка шрифта. Значение по умолчанию "10px sans-serif".

CanvasRenderingContext2D.textAlign

Выравнивание текста. Возможные значения: start (по умолчанию), end, left, right, center.

CanvasRenderingContext2D.textBaseline

Выравнивание базовой линии. Возможные значения: top, hanging, middle, alphabetic (по умолчанию), ideographic, bottom.

CanvasRenderingContext2D.direction

Направление. Возможные значения: ltr, rtl, inherit (по умолчанию).

CanvasRenderingContext2D.letterSpacing

Интерлиньяж. По умолчанию: 0px.

CanvasRenderingContext2D.fontKerning

Кернинг шрифта. Возможные значения: auto (по умолчанию), normal, none.

CanvasRenderingContext2D.fontStretch

Растяжение шрифта. Возможные значения: ultra-condensed, extra-condensed, condensed, semi-condensed, normal (по умолчанию), semi-expanded, expanded, extra-expanded, ultra-expanded.

CanvasRenderingContext2D.fontVariantCaps

Вариант прописных букв. Возможные значения: normal (по умолчанию), small-caps, all-small-caps, petite-caps, all-petite-caps, unicase, titling-caps.

CanvasRenderingContext2D.textRendering

Рендеринг текста. Возможные значения: auto (по умолчанию), optimizeSpeed, optimizeLegibility, geometricPrecision.

CanvasRenderingContext2D.wordSpacing

Межсловный интервал. Значение по умолчанию: 0px

Стили заливки и обводки

Стиль заливки используется для цветов и стилей внутри фигур, а стиль обводки — для линий вокруг фигур.

CanvasRenderingContext2D.fillStyle

Цвет или стиль, используемый внутри фигур. По умолчанию #000 (черный).

CanvasRenderingContext2D.strokeStyle

Цвет или стиль, используемый для линий вокруг фигур. По умолчанию #000 (черный).

Градиенты и узоры

CanvasRenderingContext2D.createConicGradient()

Создаёт конический градиент вокруг точки, заданной координатами параметров.

CanvasRenderingContext2D.createLinearGradient()

Создаёт линейный градиент вдоль линии, заданной координатами параметров.

CanvasRenderingContext2D.createRadialGradient()

Создаёт радиальный градиент, заданный координатами двух окружностей, представленных параметрами.

CanvasRenderingContext2D.createPattern()

Создаёт узор с использованием заданного изображения. Он повторяет исходное изображение в указанных направлениях. Этот метод возвращает CanvasPattern.

END_OF_DOCUMENT_MARKER

Тени

CanvasRenderingContext2D.shadowBlur

Указывает эффект размытия. По умолчанию: 0.

CanvasRenderingContext2D.shadowColor

Цвет тени. По умолчанию: полностью прозрачный черный.

CanvasRenderingContext2D.shadowOffsetX

Горизонтальное смещение тени. По умолчанию: 0.

CanvasRenderingContext2D.shadowOffsetY

Вертикальное смещение тени. По умолчанию: 0.

Контуры

Для управления контурами объектов можно использовать следующие методы.

CanvasRenderingContext2D.beginPath()

Начинает новый контур, очищая список подконтуров. Вызывайте этот метод, когда хотите создать новый контур.

CanvasRenderingContext2D.closePath()

Перемещает точку пера обратно к началу текущего подконтура. Попытка провести прямую линию от текущей точки до начала. Если форма уже закрыта или содержит только одну точку, функция ничего не делает.

CanvasRenderingContext2D.moveTo()

Перемещает начальную точку нового подконтура в координаты (x, y).

CanvasRenderingContext2D.lineTo()

Подключает последнюю точку текущего подконтура к указанным координатам (x, y) прямой линией.

CanvasRenderingContext2D.bezierCurveTo()

Добавляет кубическую кривую Безье в текущий контур.

CanvasRenderingContext2D.quadraticCurveTo()

Добавляет квадратическую кривую Безье в текущий контур.

CanvasRenderingContext2D.arc()

Добавляет дугу окружности в текущий контур.

CanvasRenderingContext2D.arcTo()

Добавляет дугу в текущий контур с заданными контрольными точками и радиусом, соединённую с предыдущей точкой прямой линией.

CanvasRenderingContext2D.ellipse()

Добавляет эллиптическую дугу в текущий контур.

CanvasRenderingContext2D.rect()

Создаёт контур прямоугольника в позиции (x, y) с размерами, определяемыми width и height.

CanvasRenderingContext2D.roundRect()

Создаёт контур скругленного прямоугольника с заданной позицией, шириной, высотой и радиусами углов.

Отрисовка контуров

CanvasRenderingContext2D.fill()

Заполняет текущие подконтуры текущим стилем заливки.

CanvasRenderingContext2D.stroke()

Отображает текущие подконтуры текущим стилем обводки.

CanvasRenderingContext2D.drawFocusIfNeeded()

Если заданный элемент имеет фокус, этот метод отображает фокусную рамку вокруг текущего контура.

CanvasRenderingContext2D.clip()

Создаёт контур обрезки из текущих подконтуров. Всё, что отрисовывается после вызова clip(), отображается только внутри контура обрезки. Пример смотрите в Контурах обрезки в руководстве по Canvas.

CanvasRenderingContext2D.isPointInPath()

Определяет, содержится ли указанная точка в текущем контуре.

CanvasRenderingContext2D.isPointInStroke()

Определяет, содержится ли указанная точка в области, очерченной обводкой контура.

Преобразования

Объекты в CanvasRenderingContext2D контексте отрисовки имеют текущую матрицу преобразования и методы для её изменения. Матрица преобразования применяется при создании текущего контура, отрисовке текста, фигур и Path2D объектов. Указанные ниже методы остаются по историческим и совместимостным причинам, так как в большинстве частей API сейчас используются объекты DOMMatrix, и они будут использоваться в будущем.

CanvasRenderingContext2D.getTransform()

Возвращает текущую матрицу преобразования, применяемую к контексту.

CanvasRenderingContext2D.rotate()

Добавляет поворот к матрице преобразования. Аргумент angle представляет собой угол поворота по часовой стрелке и выражается в радианах.

CanvasRenderingContext2D.scale()

Добавляет преобразование масштабирования к единицам измерения холста на x по горизонтали и на y по вертикали.

CanvasRenderingContext2D.translate()

Добавляет преобразование перемещения, перемещая холст и его начало на x по горизонтали и на y по вертикали на сетке.

CanvasRenderingContext2D.transform()

Умножает текущую матрицу преобразования на матрицу, описанную её аргументами.

CanvasRenderingContext2D.setTransform()

Сбрасывает текущее преобразование на единичную матрицу, а затем вызывает метод transform() с теми же аргументами.

CanvasRenderingContext2D.resetTransform()

Сбрасывает текущее преобразование на единичную матрицу.

Компоновка

CanvasRenderingContext2D.globalAlpha

Значение альфа-канала, применяемое к фигурам и изображениям перед их компоновкой на холст. По умолчанию 1.0 (непрозрачный).

CanvasRenderingContext2D.globalCompositeOperation

Применяя globalAlpha, задаётся способ отрисовки фигур и изображений на существующую растровую картинку.

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

CanvasRenderingContext2D.drawImage()

Отображает указанное изображение. Этот метод доступен в нескольких форматах, обеспечивая большую гибкость в использовании.

Обработка пикселей

См. также объект ImageData.

CanvasRenderingContext2D.createImageData()

Создаёт новый пустой объект ImageData с заданными размерами. Все пиксели в новом объекте — прозрачный чёрный.

CanvasRenderingContext2D.getImageData()

Возвращает объект ImageData, представляющий данные пикселей для области холста, заданной прямоугольником, который начинается в (sx, sy) и имеет ширину sw и высоту sh.

CanvasRenderingContext2D.putImageData()

Отображает данные из заданного объекта ImageData на растровую картинку. Если указан прямоугольник модификации, то только пиксели из этого прямоугольника будут отрисованы.

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

CanvasRenderingContext2D.imageSmoothingEnabled

Режим сглаживания изображений; если отключён, изображения не будут сглаживаться при масштабировании.

CanvasRenderingContext2D.imageSmoothingQuality

Позволяет установить качество сглаживания изображений.

Состояние холста

Контекст рендеринга CanvasRenderingContext2D содержит различные состояния стилей рисования (атрибуты для стилей линий, заливки, теней, стилей текста). Следующие методы помогут вам работать с этим состоянием:

CanvasRenderingContext2D.save()

Сохраняет текущее состояние стиля рисования с помощью стека, чтобы вы могли откатить любые внесенные изменения, используя restore().

CanvasRenderingContext2D.restore()

Восстанавливает состояние стиля рисования до последнего элемента в стеке состояний, сохраненного с помощью save().

CanvasRenderingContext2D.canvas

Только для чтения, ссылка на HTMLCanvasElement. Может быть null, если он не связан с элементом <canvas>.

CanvasRenderingContext2D.getContextAttributes()

Возвращает объект, содержащий атрибуты контекста, используемые браузером. Атрибуты контекста можно запросить при использовании HTMLCanvasElement.getContext() для создания 2D-контекста.

CanvasRenderingContext2D.reset()

Сбрасывает контекст рендеринга, включая буфер, стек состояния рисования, путь и стили.

CanvasRenderingContext2D.isContextLost() Экспериментальный

Возвращает true, если контекст рендеринга был потерян.

Фильтры

CanvasRenderingContext2D.filter

Применяет CSS или SVG фильтр к холсту, например, для изменения яркости или размытия.

Спецификации

Спецификация
HTML
# 2dcontext

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari на iOS Samsung Internet WebView Android
CanvasRenderingContext2D 1 12 1.5 9 2 18 4 10.1 1 1.0 4.4
arc 1 12 1.5 11.6 3 18 4 12 1 1.0 4.4
arcTo 1 12 1.5 11.6 2 18 4 12 1 1.0 4.4
beginPath 1 12 1.5 ≤12.1 2 18 4 ≤12.1 1 1.0 4.4
bezierCurveTo 1 12 1.5 11.6 2 18 4 12 1 1.0 4.4
canvas 1 12 1.5 ≤12.1 3 18 4 ≤12.1 1 1.0 4.4
clearRect 1 12 1.5 ≤12.1 2 18 4 ≤12.1 1 1.0 4.4
clip 1 12 1.5 ≤12.1 2 18 4 ≤12.1 1 1.0 4.4
closePath 1 12 1.5 11.6 2 18 4 12 1 1.0 4.4
createConicGradient 99 99 112
90Реализует более старую версию спецификации. Градиент начинается с линии, идущей вертикально вверх от центра, как и эквивалентная функция CSS.
85 16.1
15Реализует более старую версию спецификации. Градиент начинается с линии, идущей вертикально вверх от центра, как и эквивалентная функция CSS.
99 112
90Реализует более старую версию спецификации. Градиент начинается с линии, идущей вертикально вверх от центра, как и эквивалентная функция CSS.
68 16.1
15Реализует более старую версию спецификации. Градиент начинается с линии, идущей вертикально вверх от центра, как и эквивалентная функция CSS.
18.0 99
createImageData 2 12 3.5 ≤12.1 4 18 4 ≤12.1 3.2 1.0 ≤37
createLinearGradient 1 12 1.5 ≤12.1 2 18 4 ≤12.1 1 1.0 4.4
createPattern 1 12
1.5Значения повторения repeat-x и repeat-y не поддерживаются с fill(), только с fillRect(), см. ошибку 468358.
≤12.1 2 18
4Значения повторения repeat-x и repeat-y не поддерживаются с fill(), только с fillRect(), см. ошибку 468358.
≤12.1 1 1.0 4.4
createRadialGradient 1 12 1.5 ≤12.1 2 18 4 ≤12.1 1 1.0 4.4
direction 77 79 101 64 9 77 101 55 9 12.0 77
drawFocusIfNeeded 37 14 3228 24 8 37 3228 24 8 3.0 37
drawImage 1 12 1.5 9 2 18 4 10.1 1 1.0 4.4
ellipse 31 13 48 18 9 31 48 18 9 2.0 4.4.3
fill 1 12 1.5 ≤12.1 2 18 4 ≤12.1 1 1.0 4.4
fillRect 1 12 1.5 9 2 18 4 10.1 1 1.0 4.4
fillStyle 1 12 1.5 ≤12.1 2 18 4 ≤12.1 1 1.0 4.4
fillText 2 12 3.5 ≤12.1 4 18 4 ≤12.1 3.2 1.0 ≤37
filter 52 79 49 39 Нет 52 49 41 Нет 6.0 52
font 2 12 3.5 ≤12.1 4 18 4 ≤12.1 3.2 1.0 ≤37
fontKerning 99 99 104 85 Нет 99 104 68 Нет 18.0 99
fontStretch 99 99 117 85 Нет 99 117 68 Нет 18.0 99
fontVariantCaps 99 99 117 85 Нет 99 117 68 Нет 18.0 99
getContextAttributes 7332–60 79 117 6019–47 15 7332–60 117 5219–44 15 11.02.0–8.0 734.4.3–60
getImageData 2 12
2Начиная с Firefox 5, getImageData теперь корректно принимает прямоугольники, выходящие за границы холста; пиксели за пределами холста возвращаются как прозрачный черный цвет, и теперь также возвращается как минимум один пиксель данных изображения, если указан прямоугольник меньше одного пикселя.
9.5 4 18
4Начиная с Firefox for Android 5, getImageData теперь корректно принимает прямоугольники, выходящие за границы холста; пиксели за пределами холста возвращаются как прозрачный черный цвет, и теперь также возвращается как минимум один пиксель данных изображения, если указан прямоугольник меньше одного пикселя.
10.1 3.2 1.0 ≤37
getLineDash 23 12 27 15 7 25 27 14 7 1.5 4.4
getTransform 68 79 70 55 11.1 68 79 48 11.3 10.0 68
globalAlpha 1 12 1.5 ≤12.1 2 18 4 ≤12.1 1 1.0 4.4
globalCompositeOperation 1 12 1.5 9 2 18 4 10.1 1 1.0 4.4
imageSmoothingEnabled 30 15 51 17 9.1 30 51 18 9.3 2.0 4.4
imageSmoothingQuality 54 79 Нет 41 9.1 54 Нет 41 9.3 6.0 54
isContextLost 99 99 125 85 Нет 99 125 68 Нет 18.0 99
isPointInPath 1 12 2 ≤12.1 3.1 18 4 ≤12.1 2 1.0 4.4
isPointInStroke 26 79 19 15 7 26 19 14 7 1.5 4.4
letterSpacing 99 99 115 85 Нет 99 115 68 Нет 18.0 99
lineCap 1 12 1.5 ≤12.1 2 18 4 ≤12.1 1 1.0 4.4
lineDashOffset 23 12 277 15 7 25 277 14 7 1.5 4.4
lineJoin 1 12 1.5 ≤12.1 2 18 4 ≤12.1 1 1.0 4.4
lineTo 1 12 1.5 11.6 2 18 4 12 1 1.0 4.4
lineWidth 1 12 1.5 ≤12.1 2 18 4 ≤12.1 1 1.0 4.4
measureText 2 12 3.5 ≤12.1 4 18 4 ≤12.1 3.2 1.0 ≤37
miterLimit 1 12 1.5 ≤12.1 2 18 4 ≤12.1 1 1.0 4.4
moveTo 1 12 1.5 11.6 2 18 4 12 1 1.0 4.4
putImageData 2 12 2 ≤12.1 4 18 4 ≤12.1 3.2 1.0 ≤37
quadraticCurveTo 1 12 1.5 11.6 3 18 4 12 1 1.0 4.4
rect 1 12 1.5 11.6 2 18 4 12 1 1.0 4.4
reset 99 99 113 85 17.2 99 113 68 17.2 18.0 99
resetTransform 31 79 36 18 10.1 31 36 18 10.3 2.0 4.4.3
restore 1 12 1.5 ≤12.1 2 18 4 ≤12.1 1 1.0 4.4
rotate 1 12 1.5 ≤12.1 2 18 4 ≤12.1 1 1.0 4.4
roundRect 99 99 112 85 16 99 112 68 16 18.0 99
save 1 12 1.5 ≤12.1 2 18 4 ≤12.1 1 1.0 4.4
scale 1 12 1.5 ≤12.1 2 18 4 ≤12.1 1 1.0 4.4
setLineDash 23 12 27 15 7 25 27 14 7 1.5 4.4
setTransform 2 12 3 ≤12.1 4 18 4 ≤12.1 3.2 1.0 ≤37
shadowBlur 1 12 1.5 ≤12.1 2 18 4 ≤12.1 1 1.0 4.4
shadowColor 1 12 1.5 ≤12.1 2 18 4 ≤12.1 1 1.0 4.4
shadowOffsetX 1 12 1.5 ≤12.1 2 18 4 ≤12.1 1 1.0 4.4
shadowOffsetY 1 12 1.5 ≤12.1 2 18 4 ≤12.1 1 1.0 4.4
stroke 1 12 1.5 ≤12.1 2 18 4 ≤12.1 1 1.0 4.4
strokeRect 1 12 1.5 ≤12.1 2 18 4 ≤12.1 1 1.0 4.4
strokeStyle 1 12 1.5 ≤12.1 2 18 4 ≤12.1 1 1.0 4.4
strokeText 2 12 3.5 ≤12.1 4 18 4 ≤12.1 3.2 1.0 ≤37
textAlign 2 12 3.5 ≤12.1 4 18 4 ≤12.1 3.2 1.0 ≤37
textBaseline 2 12 3.5 ≤12.1 4 18 4 ≤12.1 3.2 1.0 ≤37
textRendering 99 99 116 85 Нет 99 116 68 Нет 18.0 99
transform 1 12 3 ≤12.1 3.1 18 4 ≤12.1 2 1.0 4.4
translate 1 12 1.5 ≤12.1 2 18 4 ≤12.1 1 1.0 4.4
wordSpacing 99 99 115 85 Нет 99 115 68 Нет 18.0 99

См. также

  • HTMLCanvasElement
  • <canvas>
  • OffscreenCanvas

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API