В контексте холста есть эта скрытая вещь, называемая текущим путем. ctx.beginPath
, ctx.lineTo
и т. Д. Создайте этот путь.
Когда вы звоните ctx.stroke()
или ctx.fill()
, холст поглаживает или заполняет этот путь.
Даже после обводки или заливки путь все еще присутствует в контексте.
Этот путь - только вещь, которую isPointInPath
проверяет.
Если вы хотите проверить, находится ли что-то на изображении, которое вы нарисовали, или на прямоугольнике, нарисованном с помощью ctx.fillRect()
, это невозможно при использовании встроенных методов.
Как правило, вы хотите использовать функцию «точка-в-прямоугольнике», которую вы пишете сами (или получаете от кого-то другого).
Если вы ищете, как сделать идеальное пиксельное (а не только прямоугольное изображение) обнаружение попадания для изображения, здесь обсуждаются различные методы: Пиксельная 2D-мышь с выбором Canvas