javascript - 如何以角度获取区域下的所有svg对象?
问题描述
我正在制作一个 svg 绘图应用程序。我有一个工具,允许用户选择矩形区域中的所有形状。
我需要一种方法来检测矩形下的 svg 形状。
我尝试在我的根 svg 元素上使用“document.elementFromPoint”和“getIntersectionList”。我使用了一个将 fillColor 设置为 none 的路径 svg 对象来显示一条线。如果该区域位于不可见区域之上,则 getIntersectionList 会选择路径,因此它不起作用。如果我滚动,“document.elementFromPoint”将不起作用。
我能想到的唯一方法是在该区域内的所有像素上生成一个单击事件,并监听该事件。
我怎样才能做到这一点?谢谢你
编辑:这是一个插图。白色方块是选择区域。它下面的项目必须以红色突出显示。方块跟随鼠标。如果我将鼠标从线条上移开,它们必须变回白色
解决方案
如果您想对 svg 元素进行点击事件,我强烈建议您检查ngx-svg库。它为每个元素提供了各种 svg 元素和事件。用法也很简单——
<svg-container id="test-container>
<svg-circle radius="2" (clickEvent)="doSomething($event)"></svg-circle>
</svg-container>
这些事件适用于所有元素。您还可以使用库自定义不同的东西。有关更多信息,请查看库的文档。
推荐阅读
- .net - 保存生成的文件链接
- java - 我无法打开 OMNeT++ IDE
- angular - 如何在 Typescript 中动态禁用或启用 ng-multiselect-dropdown
- python - sqlalchemy 等价于 sql 语法
- php - 在路由组中分配中间件和在控制器的构造函数中启动它有什么区别吗?
- php - 使用imagick从PDF创建图像时出现以下错误,任何人都可以帮助修复它
- javascript - webpack 4 给出背景: url([object Module]) as bg image
- jasmine - Uncaught ReferenceError: Zone is not defined (Jasmine)
- c# - 有没有办法用 linq 查询过滤嵌套列表,以便我最终得到充分过滤列表的过滤列表?
- google-cloud-platform - 在 dataproc 上提交 Presto 作业