Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检测点是否位于复杂、不规则的矢量图形(SVG)内?_Svg_Events_Detection_Point_Vector Graphics - Fatal编程技术网

如何检测点是否位于复杂、不规则的矢量图形(SVG)内?

如何检测点是否位于复杂、不规则的矢量图形(SVG)内?,svg,events,detection,point,vector-graphics,Svg,Events,Detection,Point,Vector Graphics,我对这一切多少有些陌生。我正在尝试使用SVG创建一个应用程序(因为我更希望矢量形状能够在不损失质量的情况下进行缩放)。使用web技术,稍后将迁移到react native 我有没有办法确定一个点(x,y,也由CSS的左属性和上属性决定)是否在一个高度复杂、不规则的向量形状中 我知道我的问题充满了限制,这使得它很难回答,即使指向正确的文档也会很有帮助 PS:我尝试了elementFromPoint()方法,但它返回DOM放在SVG周围的边框。这完全违背了我的目的,我希望确保只在SVG路径和形状本身

我对这一切多少有些陌生。我正在尝试使用SVG创建一个应用程序(因为我更希望矢量形状能够在不损失质量的情况下进行缩放)。使用web技术,稍后将迁移到react native

我有没有办法确定一个点(x,y,也由CSS的左属性和上属性决定)是否在一个高度复杂、不规则的向量形状中

我知道我的问题充满了限制,这使得它很难回答,即使指向正确的文档也会很有帮助

PS:我尝试了elementFromPoint()方法,但它返回DOM放在SVG周围的边框。这完全违背了我的目的,我希望确保只在SVG路径和形状本身中检测到该点。 感谢您的帮助,
谢谢

只要使用内联SVG,就可以正常工作:

const shape=document.querySelector(“#shape”),
状态=document.querySelector(“#inout”);
document.body.addEventListener('mousemove',函数(e){
常数x=e.clientX,
y=e.clientY;
if(document.elementFromPoint(x,y)==形状){
status.className=status.textContent='inside';
}
否则{
status.className=status.textContent='outside';
}
});
h2{margin:0;}
.inner{颜色:石灰;}
.外部{颜色:红色;}
光标位于:外部

只要使用内联SVG,就可以正常工作:

const shape=document.querySelector(“#shape”),
状态=document.querySelector(“#inout”);
document.body.addEventListener('mousemove',函数(e){
常数x=e.clientX,
y=e.clientY;
if(document.elementFromPoint(x,y)==形状){
status.className=status.textContent='inside';
}
否则{
status.className=status.textContent='outside';
}
});
h2{margin:0;}
.inner{颜色:石灰;}
.外部{颜色:红色;}
光标位于:外部

那么,您是在尝试检测光标下的点以在SVG上显示悬停效果,还是更复杂?您只是在使用内嵌SVG,还是在使用像Two.js或D3这样的库?@NickGimbal嘿,这将是一个静态点,而不是鼠标光标。我想拖动一个充满不同路径/形状的视图,看看它们何时与点相交。目前没有其他图书馆。内联这个词已经被提到过好几次了,你们是指HTML内联还是块?无论如何,非常感谢您的回复@Kaido嗨,我考虑过这个问题,但我有点偏执,认为它不可能在所有浏览器中都完全可用,这就是SVG2,对吗?谢谢你的帖子@Sphinxxx Wow我是在比较周围的SVG,而不是其中的单个路径。非常有帮助,谢谢你的代码,让它非常清晰!那么,您是在尝试检测光标下的点,以便在SVG上显示悬停效果,还是更复杂?您只是在使用内嵌SVG,还是在使用像Two.js或D3这样的库?@NickGimbal嘿,这将是一个静态点,而不是鼠标光标。我想拖动一个充满不同路径/形状的视图,看看它们何时与点相交。目前没有其他图书馆。内联这个词已经被提到过好几次了,你们是指HTML内联还是块?无论如何,非常感谢您的回复@Kaido嗨,我考虑过这个问题,但我有点偏执,认为它不可能在所有浏览器中都完全可用,这就是SVG2,对吗?谢谢你的帖子@Sphinxxx Wow我是在比较周围的SVG,而不是其中的单个路径。非常有帮助,谢谢你的代码,让它非常清晰!哇,我是在比较周围的SVG,而不是其中的单个路径。非常有帮助,谢谢你的代码,让它非常清晰!哇,我是在比较周围的SVG,而不是其中的单个路径。非常有帮助,谢谢你的代码,让它非常清晰!