CanvasRenderingContext2D: метод createPattern()
Базовая Широко распространена
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Метод CanvasRenderingContext2D.createPattern() API холста 2D создаёт узор, используя указанное изображение и способ повторения. Этот метод возвращает CanvasPattern.
Этот метод напрямую ничего не рисует на холст. Созданный узор необходимо назначить свойству CanvasRenderingContext2D.fillStyle или CanvasRenderingContext2D.strokeStyle, после чего он будет применён к любым последующим операциям рисования.
Синтаксис
createPattern(image, repetition)
Параметры
image-
Изображение, которое будет использоваться как изображение узора. Оно может быть любого из следующих типов:
-
HTMLImageElement(<img>) -
SVGImageElement(<image>) -
HTMLVideoElement(<video>, используя захват видео) -
HTMLCanvasElement(<canvas>) ImageBitmapOffscreenCanvasVideoFrame
-
repetition-
Строка, указывающая, как повторять изображение узора. Возможные значения:
-
"repeat"(в обоих направлениях) -
"repeat-x"(только по горизонтали) -
"repeat-y"(только по вертикали) -
"no-repeat"(ни в одном направлении)
Значение
nullобрабатывается так же, как пустая строка (""): оба являются синонимами"repeat". -
Возвращаемое значение
CanvasPattern-
Непрозрачный объект, описывающий узор.
Если image не полностью загружен (HTMLImageElement.complete false), то возвращается null.
Примеры
Создание узора из изображения
В этом примере используется метод createPattern() для создания CanvasPattern с повторяющимся исходным изображением. После создания узор назначается стилю заливки контекста холста и применяется к прямоугольнику.
Исходное изображение выглядит так:
HTML
<canvas id="canvas" width="300" height="300"></canvas>
JavaScript
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
const img = new Image();
img.src = "canvas_create_pattern.png";
// Only use the image after it's loaded
img.onload = () => {
const pattern = ctx.createPattern(img, "repeat");
ctx.fillStyle = pattern;
ctx.fillRect(0, 0, 300, 300);
};
Создание узора из холста
В этом примере мы создаём узор из содержимого отложенного холста. Затем мы применяем его к стилю заливки нашего основного холста и заполняем этот холст узором.
JavaScript
// Create a pattern, offscreen
const patternCanvas = document.createElement("canvas");
const patternContext = patternCanvas.getContext("2d");
// Give the pattern a width and height of 50
patternCanvas.width = 50;
patternCanvas.height = 50;
// Give the pattern a background color and draw an arc
patternContext.fillStyle = "#fec";
patternContext.fillRect(0, 0, patternCanvas.width, patternCanvas.height);
patternContext.arc(0, 0, 50, 0, 0.5 * Math.PI);
patternContext.stroke();
// Create our primary canvas and fill it with the pattern
const canvas = document.createElement("canvas");
const ctx = canvas.getContext("2d");
const pattern = ctx.createPattern(patternCanvas, "repeat");
ctx.fillStyle = pattern;
ctx.fillRect(0, 0, canvas.width, canvas.height);
// Add our primary canvas to the webpage
document.body.appendChild(canvas);
Результат
Спецификации
| Спецификация |
|---|
| HTML # dom-context-2d-createpattern-dev |
Совместимость с браузерами
| Рабочий стол | Мобильный | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
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 |
См. также
- Интерфейс, определяющий этот метод:
CanvasRenderingContext2D CanvasPattern
© 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/createPattern