我已经在画布元素中创建了一条线,我正在寻找最简单的方法来检测鼠标的位置是否在画布中的线内。
我已经使用这个函数来查看鼠标在画布中的位置,但是我对应该如何进行感到非常困惑。
function getMousePos(c, evt) {
var rect = c.getBoundingClientRect();
return {
x: evt.clientX - rect.left,
y: evt.clientY - rect.top
};
}
我也看过这个主题Fabricjs detect mouse over object path,但是它检测鼠标是否在画布内,而不是在对象内。
我创建的线是彼此连接的较小线的一部分。
for (var i = 0; i < 140 ; i++) {
ctx.beginPath();
ctx.moveTo(x[i],y[i]);
ctx.quadraticCurveTo(x[i],50,x[i+1],y[i+1]);
ctx.lineWidth = 40;
ctx.strokeStyle = 'white';
ctx.lineCap = 'round';
ctx.stroke();
}
其中x[i]和y[i]是包含所需坐标的数组。
我希望我的问题是清楚的,尽管我对javascript不是很熟悉。
谢谢迪米特拉
2条答案
按热度按时间zmeyuzjn1#
演示:http://jsfiddle.net/m1erickson/Cw4ZN/
要检查鼠标是否在一条线内,需要使用以下概念:
下面是带注解的示例代码,供您学习。
关于命中测试路径:
如果您使用路径命令创建路径,您可以使用context. isPointInPath(mouseX,mouseY)来检查鼠标是否在路径内。context. isPointInPath不适用于线条,因为线条理论上具有零宽度可"命中"。
xvw2m8pv2#
将鼠标移到div上
鼠标离开div