- 32
- 0
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title><style> html, body { margin: 0; }</style></head><body><canvas id="haha"></canvas></body><script>const canvas = document.getElementById('haha');const width = canvas.width = window.innerWidth;const height = canvas.height = window.innerHeight - 5;const ctx = canvas.getContext('2d');var points = [];var paths = [];var drawNow = false;var result = [];const draw = () => { paths = []; for (var i = 0; i < points.length; i++) { if (i == 0) { paths[i] = new Path2D(); } else { paths[i] = new Path2D(paths[i - 1]); } paths[i].moveTo(points[i][0].x, points[i][0].y); for (var j = 1; j < points[i].length; j++) { paths[i].lineTo(points[i][j].x, points[i][j].y); } } ctx.clearRect(0, 0, width, height); ctx.fillStyle = "green"; ctx.fill(paths[paths.length - 1], 'evenodd') ctx.stroke(paths[paths.length - 1]); }// 获取spot坐标const getPosition = (arr)=>{ let newarr = arr.flat(); var x = newarr.sort((a, b)=>{ return a.pagex - b.pagex }); var xMin = x[0].x; var xMax = x[x.length - 1].x; var y = newarr.sort((a, b)=>{ return a.pagey - b.pagey }); var yMin = y[0].y; var yMax = y[y.length - 1].y; for(var i = xMin; i < xMax; i++){ for(var j = yMin; j < yMax; j++){ if(ctx.isPointInPath(i, j, 'evenodd')){ result.push([i, j]); } } }; console.log(result)}canvas.onmousedown = function (e) { drawNow = true; ctx.beginPath(); points.push([]); points[points.length - 1].push({ x: e.clientX, y: e.clientY, pagex: e.pageX, pagey: e.pageY }); };canvas.onmousemove = function (e) { if (drawNow) { points[points.length - 1].push({ x: e.clientX, y: e.clientY, pagex: e.pageX, pagey: e.pageY }); draw(); } };canvas.onmouseup = function () { ctx.closePath(); drawNow = false; getPosition(points)};</script></html>在鼠标交互作图是,当鼠标抬起,我想要获取闭合路径中的坐标点,可是我的isPointPath()返回的都是false,不明白是哪里的原因,请求大佬的指导
0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
镜中花水中月 普通会员 1楼
canvas.isPointPath方法是用来检查给定的路径是否在canvas上。如果路径是在canvas上,那么isPointPath方法应该返回true。但是,如果你在代码中没有调用这个方法,那么它可能不会被执行。如果你在canvas上创建了一个path对象,然后尝试使用
isPointPath方法来检查它是否在canvas上,但是没有创建这个path对象,那么这个方法也不会被执行。例如,如果你在JavaScript中创建了一个canvas元素,然后添加了一个path对象,然后试图使用
isPointPath方法来检查这个path是否在canvas上,但是没有创建这个path对象,那么这个方法也不会被执行。如果你想要在canvas上创建一个path对象,然后使用
isPointPath方法来检查它是否在canvas上,你需要首先创建这个path对象,然后调用isPointPath方法。例如:```javascript var canvas = document.getElementById('myCanvas'); var ctx = canvas.getContext('2d');
// 创建path对象 var path = ctx.beginPath();
// 添加点到path上 path.moveTo(100, 100); path.lineTo(200, 200);
// 打印path是否在canvas上 console.log(isPointPath(path)); ```
如果你在你的代码中没有创建这个path对象,那么
isPointPath方法可能不会被执行。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
