【问题标题】:Check whether an SVG rect is within an SVG path检查 SVG 矩形是否在 SVG 路径内
【发布时间】:2022-01-22 23:41:23
【问题描述】:

我试图弄清楚如何检查矩形是否完全在 SVG 路径内。目前我正在使用 SVG 的 isPointInFill() 函数来检查它的角点是否这样做。但正如您所见,粉红色方块在视觉上不在 SVG 路径内,但它的角点在,因此它被标记为“内部”。

我需要 getIntersectionList() 之类的东西,但需要两个 SVG 元素。

有谁知道解决这个问题的方法吗?

编辑:我找到了解决方案。 我使用 Path 元素代替了 Rect 元素。对于路径,我有 .getTotalLength() 和 .getPointAtLength() - 这就是我如何获得每个像素的整个轮廓的坐标。

【问题讨论】:

  • 你可以尝试每个边界点,而不仅仅是角落。
  • 检查重叠的目的是什么?
  • @chrwahl 目的是最后我将有一个矩形网格,由一个形状约束为 ClipPath 蒙版。然后,用户应该只能点击完全在掩码内的矩形。
  • @RatajS 是的,但是如何找到所有虚构的边界点?
  • @chrs 它应该是带有 x 26 或 56 和 y 18–45 的点与带有 x 26–56 和 y 18 或 45 的点组合为您的粉红色方块。

标签: javascript svg


【解决方案1】:

蛮力法 - 克隆那个 SVG 元素,用黑色填充路径(最后绘制它)。将生成的 SVG 转储到 Canvas 中,如果任何像素不是白色或黑色,请检查它们是否是其中一个矩形的颜色。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    • 2015-06-08
    • 1970-01-01
    • 2014-02-18
    • 2022-01-20
    • 2012-10-28
    相关资源
    最近更新 更多