javascript - 通过在它们周围徒手绘制来选择 SVG 元素

标签 javascript html d3.js svg

我正在做一个项目,我想在一些 SVG 元素周围画一条线,以便选择区域内的对象。

这是我现在的截图。我已经使用 Paint 添加了线条,以便完全清楚我想要实现的目标。我想选择绘制的圆圈内的两个 rect

Screenshot

我看到了一些必须解决的步骤:

  1. mousedown 处创建一个 path 元素并记录鼠标移动直到 mouseup
  2. 关闭路径,以防用户没有画圆
  3. 查找完全或部分在圆圈内的 svg 元素

您看到了哪些方法,您对如何着手有什么建议吗?

我正在使用 D3.js .这slide (作者 Mike Bostock,D3 的创建者)可能值得一看。

最佳答案

我会执行以下步骤:

  1. 获取手绘形式的 aabb(或最小/最大框),
  2. 找到其 aabb 与自由形式的重叠的所有元素并将其保存在列表中,
  3. 得到手绘形式的凸包,
  4. 测试列表元素中的每个或部分顶点是否位于凸包内

根据您是否测试所有顶点是否位于凸包内,您可以确定元素是完全位于手绘图内还是仅与其重叠。

不幸的是,我对 d3.js 不是很熟悉,只是猜测它提供了在多边形内获得凸包、aabb 和测试点的方法。可能它甚至使您能够进行 aabb 查询以在第 2 步中找到重叠的 aabb。

祝你好运......

关于javascript - 通过在它们周围徒手绘制来选择 SVG 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15092686/

相关文章:

javascript - 我在返回值(函数)时遇到问题[这个问题不是重复的问题]

javascript - 将 imagegrabscreen php 函数包含到按钮 onclick 中,无需刷新页面

javascript - 如何将文本从 <a> 传递到另一个页面上的文本区域?

javascript - 在 d3 可视化中访问 MySQL 数据库

javascript - D3js 仪表图

javascript - 使用 jQuery 垂直居中内容

javascript - 如果用户单击图像的右中部分,则调用函数

python - PyCharm:Python 字符串中的 HTML 语法检查和突出显示

javascript - D3 面积图未端到端渲染

javascript - IE11 中 ko.protected Observable 的问题