gpt4 book ai didi

javascript - SVG- 使用 javascript 的路径裁剪

转载 作者:太空宇宙 更新时间:2023-11-04 08:41:20 26 4
gpt4 key购买 nike

我正在尝试使用 JavaScript 剪辑路径。我试过下面的代码。

   <svg width="900" height="600">
<clipPath id="clip">
<path d="M 0 464 L 0 293.8666666666667 C 92.6666666666456 251.59111111111108 185.3333333332912 209.31555555555556 278 201.06666666666666 C 370.6666666666456 192.8177777777778 463.33333333329125 218.59555555555556 556 247.46666666666673 C 648.6666666666456 276.33777777777783 741.3333333332912 308.3022222222222 834 340.2666666666667 L 834 464" />
</clipPath>
<path d="M 0 464 L 0 293.8666666666667 C 92.6666666666456 251.59111111111108 185.3333333332912 209.31555555555556 278 201.06666666666666 C 370.6666666666456 192.8177777777778 463.33333333329125 218.59555555555556 556 247.46666666666673 C 648.6666666666456 276.33777777777783 741.3333333332912 308.3022222222222 834 340.2666666666667 L 834 464" fill="red" opacity="0.8" />
<path d="M 0 293 L 0 139.19999999999996 C 92.6666666666456 107.06370370370374 185.3333333332912 74.92740740740744 278 69.60000000000001 C 370.6666666666456 64.27259259259263 463.33333333329125 85.75407407407415 556 108.2666666666667 C 648.6666666666456 130.77925925925928 741.3333333332912 154.322962962963 834 177.86666666666665 L 834 340.2666666666667 M 0 293.8666666666667 C 92.6666666666456 251.59111111111108 185.3333333332912 209.31555555555556 278 201.06666666666666 C 370.6666666666456 192.8177777777778 463.33333333329125 218.59555555555556 556 247.46666666666673 C 648.6666666666456 276.33777777777783 741.3333333332912 308.3022222222222 834 340.2666666666667" stroke="red" fill="green" opacity="0.7"/>
</svg>

这将剪切除红色路径之外的路径。我想剪辑在红色上渲染的绿色路径。可以剪辑吗?

最佳答案

你是说这样吗?

<svg width="900" height="600">
<clipPath id="clip">
<path d="M 0 464 L 0 293.8666666666667 C 92.6666666666456 251.59111111111108 185.3333333332912 209.31555555555556 278 201.06666666666666 C 370.6666666666456 192.8177777777778 463.33333333329125 218.59555555555556 556 247.46666666666673 C 648.6666666666456 276.33777777777783 741.3333333332912 308.3022222222222 834 340.2666666666667 L 834 464" />
</clipPath>
<path d="M 0 464 L 0 293.8666666666667 C 92.6666666666456 251.59111111111108 185.3333333332912 209.31555555555556 278 201.06666666666666 C 370.6666666666456 192.8177777777778 463.33333333329125 218.59555555555556 556 247.46666666666673 C 648.6666666666456 276.33777777777783 741.3333333332912 308.3022222222222 834 340.2666666666667 L 834 464" fill="red" opacity="0.8" />
<path d="M 0 293 L 0 139.19999999999996 C 92.6666666666456 107.06370370370374 185.3333333332912 74.92740740740744 278 69.60000000000001 C 370.6666666666456 64.27259259259263 463.33333333329125 85.75407407407415 556 108.2666666666667 C 648.6666666666456 130.77925925925928 741.3333333332912 154.322962962963 834 177.86666666666665 L 834 340.2666666666667 M 0 293.8666666666667 C 92.6666666666456 251.59111111111108 185.3333333332912 209.31555555555556 278 201.06666666666666 C 370.6666666666456 192.8177777777778 463.33333333329125 218.59555555555556 556 247.46666666666673 C 648.6666666666456 276.33777777777783 741.3333333332912 308.3022222222222 834 340.2666666666667" stroke="red" fill="green" opacity="0.7"
clip-path="url(#clip)"/>
</svg>

更新

最简单的解决方案是正确构建绿色路径。您原来的绿色路径由两个子路径组成:

  1. 一个从左边开始,向上越过顶部,然后从右边向下。
  2. 第二个从左边开始,沿着红色曲线的顶部结束。

enter image description here

子路径分别填充,因此您实际上得到了两个绿色形状。两者都与红色形状的顶部重叠。

解决方案是反转第二个子路径(因此它从右到左)。 然后用它来完成第一个绿色形状,使其绕过红色形状,而不是穿过它。

enter image description here

  <svg width="900" height="600">
<path d="M 0 464 L 0 293.8666666666667 C 92.6666666666456 251.59111111111108 185.3333333332912 209.31555555555556 278 201.06666666666666 C 370.6666666666456 192.8177777777778 463.33333333329125 218.59555555555556 556 247.46666666666673 C 648.6666666666456 276.33777777777783 741.3333333332912 308.3022222222222 834 340.2666666666667 L 834 464" fill="red" opacity="0.8" />
<path d="M 0 293 L 0 139.19999999999996 C 92.6666666666456 107.06370370370374 185.3333333332912 74.92740740740744 278 69.60000000000001 C 370.6666666666456 64.27259259259263 463.33333333329125 85.75407407407415 556 108.2666666666667 C 648.6666666666456 130.77925925925928 741.3333333332912 154.322962962963 834 177.86666666666665 L 834 340.2666666666667 C 741 308 648 276 556 247 C 463 218 370 192 278 201 C 185 209 92 251 0 293 Z" stroke="red" fill="green" opacity="0.7"/>
</svg>

关于javascript - SVG- 使用 javascript 的路径裁剪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44107207/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com