javascript - 如何从填充的 SVG 路径中删除形状

标签 javascript d3.js svg

我有这个 fiddle :https://jsfiddle.net/thatOneGuy/1spn8nne/1/

这有两条路径,目前,它们只是矩形,但实际上是复杂的形状。我使用此代码创建了两个带有“孔”的矩形:

createRects(dataPointsPath2, 'blue');
createHoles(dataPointsCircle2);
createRects(dataPointsPath1, 'red');
createHoles(dataPointsCircle1);

我需要的是从填充路径中移除孔,以便您可以看到它后面的矩形。

如何从填充路径中删除形状(圆形)?

编辑

我刚刚意识到,剪辑路径可能会很好地解决这个问题,我会尝试实现,但如果有人有任何想法,我将不胜感激:)

最佳答案

这是一种绘制带洞的矩形的方法。它依赖于 evenodd 填充规则。圆圈在矩形内部,它变成矩形中的一个洞,蓝色背景显示出来。

  <svg viewBox="0 0 250 250">
  <rect width="100%" height="100%" fill="blue"/>
    <path fill="#b4edb4" fill-rule="evenodd"  d="M230,230H8V13h223
	 V236z M 120 80 a 50 50 0 1 0 0.00001 0z"/>
</svg>

关于javascript - 如何从填充的 SVG 路径中删除形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38654828/

相关文章:

javascript - 打印时隐藏部分页面?

javascript - 无法在 'setAttribute' : 'Element' is not a valid attribute name 上执行 '0'

php - Ace Editor 自动完成和多语言

javascript - 在可拖动点与控制点之间绘制曲线以调整曲线 SVG 和 d3.js

javascript - 将 d3.js 气泡转换为基于强制/重力的布局

html - SVG/SMIL 回流/重绘的性能影响?

javascript - 将数据插入表中并像表单一样提交

javascript - 使用 d3 和 dc.js 自定义时间线刻度

angular - "export ' 鼠标 ' (imported as ' d3 ') was not found in ' d3'

css - Safari 手机 : pointer-events CSS does not work for SVG content