CanvasRenderingContext2D: isPointInPath() 方法
基线 广泛可用
此功能已经很成熟,并且在许多设备和浏览器版本上都能正常工作。它从 2015 年 7 月.
报告反馈
语法
Canvas 2D API 的
CanvasRenderingContext2D.isPointInPath()
方法报告指定点是否包含在当前路径中。isPointInPath(x, y)
isPointInPath(x, y, fillRule)
isPointInPath(path, x, y)
isPointInPath(path, x, y, fillRule)
js
参数
-
x
要检查的点的 x 轴坐标,不受上下文当前变换的影响。
-
y
要检查的点的 y 轴坐标,不受上下文当前变换的影响。
-
fillRule
用于确定点在路径内部还是外部的算法。可能的值
-
nonzero
非零绕线规则。默认规则。
-
evenodd
奇偶绕线规则。
-
path
要检查的 Path2D
路径。如果未指定,则使用当前路径。
- 返回值
-
布尔值
示例
布尔值,如果指定点包含在当前路径或指定路径中,则为 true
,否则为 false
。
检查当前路径中的点
HTML
此示例使用
isPointInPath()
方法检查点是否在当前路径内。<canvas id="canvas"></canvas>
<p>In path: <code id="result">false</code></p>
JavaScript
Canvas 2D API 的
CanvasRenderingContext2D.isPointInPath()
方法报告指定点是否包含在当前路径中。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);
html
结果
检查指定路径中的点
HTML
此示例使用
isPointInPath()
方法检查点是否在当前路径内。<canvas id="canvas"></canvas>
JavaScript
Canvas 2D API 的
CanvasRenderingContext2D.isPointInPath()
方法报告指定点是否包含在当前路径中。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
规范
每当您移动鼠标时,此示例会检查光标是否在圆形 Path2D 路径内。如果是,则圆形变为绿色,否则为红色。 |
---|
规范 # HTML 标准 |
浏览器兼容性
dom-context-2d-ispointinpath-dev
Gecko 特定说明
- 在 Gecko 7.0(Firefox 7.0 / Thunderbird 7.0 / SeaMonkey 2.4)之前,此方法错误地无法在将指定点的坐标与路径进行比较之前将其乘以当前变换矩阵。现在,即使上下文已旋转、缩放或以其他方式变换,此方法也能正常工作。
另请参阅
- 定义此方法的接口:
CanvasRenderingContext2D