Spec-Zone.ru › Web APIs

CanvasRenderingContext2D: метод createPattern()

Базовая Широко распространена

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

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

Метод CanvasRenderingContext2D.createPattern() API холста 2D создаёт узор, используя указанное изображение и способ повторения. Этот метод возвращает CanvasPattern.

Этот метод напрямую ничего не рисует на холст. Созданный узор необходимо назначить свойству CanvasRenderingContext2D.fillStyle или CanvasRenderingContext2D.strokeStyle, после чего он будет применён к любым последующим операциям рисования.

Синтаксис

createPattern(image, repetition)

Параметры

image

Изображение, которое будет использоваться как изображение узора. Оно может быть любого из следующих типов:

  • HTMLImageElement (<img>)
  • SVGImageElement (<image>)
  • HTMLVideoElement (<video>, используя захват видео)
  • HTMLCanvasElement (<canvas>)
  • ImageBitmap
  • OffscreenCanvas
  • VideoFrame
repetition

Строка, указывающая, как повторять изображение узора. Возможные значения:

  • "repeat" (в обоих направлениях)
  • "repeat-x" (только по горизонтали)
  • "repeat-y" (только по вертикали)
  • "no-repeat" (ни в одном направлении)

Значение null обрабатывается так же, как пустая строка (""): оба являются синонимами "repeat".

Возвращаемое значение

CanvasPattern

Непрозрачный объект, описывающий узор.

Если image не полностью загружен (HTMLImageElement.complete false), то возвращается null.

Примеры

Создание узора из изображения

В этом примере используется метод createPattern() для создания CanvasPattern с повторяющимся исходным изображением. После создания узор назначается стилю заливки контекста холста и применяется к прямоугольнику.

Исходное изображение выглядит так:

A flowery pattern

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

Spec-Zone.ru

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