Spec-Zone.ru › Web APIs

CanvasRenderingContext2D: метод isPointInPath()

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

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

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

Метод CanvasRenderingContext2D.isPointInPath() API холста 2D сообщает, содержится ли указанная точка в текущей траектории.

Синтаксис

isPointInPath(x, y)
isPointInPath(x, y, fillRule)
isPointInPath(path, x, y)
isPointInPath(path, x, y, fillRule)

Параметры

x

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

y

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

fillRule

Алгоритм определения, находится ли точка внутри или вне траектории. Возможные значения:

nonzero

Правило о нечётном количестве пересечений. Правило по умолчанию.

evenodd

Правило чётности.

path

Траектория Path2D для проверки. Если не указано, используется текущая траектория.

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

Булево значение

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

Примеры

Проверка точки в текущей траектории

В этом примере используется метод isPointInPath() для проверки, находится ли точка внутри текущей траектории.

HTML

<canvas id="canvas"></canvas>
<p>In path: <code id="result">false</code></p>

JavaScript

const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
const result = document.getElementById("result");

ctx.rect(10, 10, 100, 100);
ctx.fill();
result.innerText = ctx.isPointInPath(30, 70);

Результат

Проверка точки в указанной траектории

В этом примере при перемещении мыши проверяется, находится ли курсор внутри круговой Path2D траектории. Если да, круг становится зелёным, иначе — красным.

HTML

<canvas id="canvas"></canvas>

JavaScript

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

// Create circle
const circle = new Path2D();
circle.arc(150, 75, 50, 0, 2 * Math.PI);
ctx.fillStyle = "red";
ctx.fill(circle);

// Listen for mouse moves
canvas.addEventListener("mousemove", (event) => {
  // Check whether point is inside circle
  const isPointInPath = ctx.isPointInPath(circle, event.offsetX, event.offsetY);
  ctx.fillStyle = isPointInPath ? "green" : "red";

  // Draw circle
  ctx.clearRect(0, 0, canvas.width, canvas.height);
  ctx.fill(circle);
});

Результат

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

Спецификация
HTML
# dom-context-2d-ispointinpath-dev

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

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
isPointInPath 1 12 2 ≤12.1 3.1 18 4 ≤12.1 2 1.0 4.4
path_parameter 36 14 31 23 7 36 31 24 7 3.0 37

Примечание для Gecko

  • До Gecko 7.0 (Firefox 7.0 / Thunderbird 7.0 / SeaMonkey 2.4) этот метод неправильно не умножал координаты заданной точки на текущую матрицу преобразования перед сравнением с траекторией. Сейчас метод работает правильно, даже если контекст повернут, масштабирован или преобразован другим способом.

См. также

  • Интерфейс, определяющий этот метод: CanvasRenderingContext2D

© 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/isPointInPath

Spec-Zone.ru

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