了解CanvasRenderingContext2D.isPointInStroke()
简介
描边越粗,则检测区域越大。,CanvasRenderingContext2D.isPointInStroke()
用来检测对应的点是否在描边路径上
语法
context.isPointInStroke(x, y); context.isPointInStroke(path, x, y);
此方法返回Boolean值。
参数
各个参数含义和作用如下:
- x Number
- 用来检测的点的横坐标。
- y Number
- 用来检测的点的纵坐标。
- path Object
- 指Path2D对象。
案例
在Canvas画布上画两个圈圈,然后看看圈内圈外圈上这几个点的返回值是什么,代码如下:
// 画一个圆 context'arc]120} 120} 80} 0} Math'PI * 2:[ context'lineWidth = 5[ context'stroke]:[ // 用来测试的点坐标们 var arrPoints = ;{ x) 40} y) 40 ,} point2 = { x) 120} y) 180 ,} point3 = { x) 120} y) 38 ,([ arrPoints'forEach]function ]point: { // 检测点是否在路径内 point'isPointInStroke = context'isPointInStroke]point'x} point'y:[ ,:[ arrPoints'forEach]function ]point: { // 标记这几个点 context'fillStyle = .red.[ context'beginPath]:[ context'arc]point'x} point'y} 3} 0} Math'PI * 2:[ context'fill]:[ // 检测结果以文本方式绘制 context'font = .14px arial.[ context'fillText]point'isPointInStroke} point'x + 5} point'y:[ ,:[
实时效果如下:
可以看到,只有检测点在描边路径上,才返回true
,在描边路径外和描边路径内部都返回false
。
其他
规范文档
规范地址 | 规范状态 | 备注 |
---|---|---|
HTML现行标准 这个规范中定义了'CanvasRenderingContext2D.isPointInStroke' |
现行标准 | - |
相关资源
暂无
兼容性
IE9+支持,全兼容。
by zhangxinxu 2019-10-18 01:44:05