gpt4 book ai didi

html - 将 clipPath 应用于带有变换的图像元素时出现问题

转载 作者:可可西里 更新时间:2023-11-01 13:34:50 24 4
gpt4 key购买 nike

对于我的生活,我无法弄清楚为什么 SVG 不会呈现以下图形:

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1636px" height="911px" viewBox="0 0 623316 347091">
<clipPath id="randompath">
<path d="M 6096 82296 C 6096 40211.90206289354 48740.87757861691 6096 101345.99999999999 6095.999999999988 153951.12242138304 6095.999999999977 196596.00000000003 40211.9020628935 196596.00000000003 82295.99999999996 196596.00000000003 124380.09793710642 153951.1224213831 158495.99999999997 101346.00000000001 158495.99999999997 48740.87757861695 158495.99999999997 6096.000000000012 124380.09793710642 6096 82295.99999999997 Z"/>
</clipPath>
<image x="0" y="0" height="500px" width="500px" xlink:href="http://www.cutepandapictures.com/wp-content/uploads/2012/07/babypandahugsatree.jpg" transform="matrix(381,0,0,381,6096,6096)" clip-path="url(#randompath)"/>
</svg>

我发现了以下两件事:

  • 当裁剪路径为基本圆时,图像会被正确裁剪。
  • 当未设置剪辑路径时,图像可以正确呈现。

功能失调代码的演示可用 here .

编辑:clipPath 内的路径自行正确呈现。我怀疑它不会呈现,因为根据 this ,剪辑路径是相对于被剪辑的图像呈现的,而不是 View 框。

最佳答案

SVG!=CSS。在 SVG 中设置 View 框单位后,这些单位通常会覆盖文档其余部分中指定的任何单位(例如 <image> 中的那些“px”)。 SVG 正在读取“500px”的这些值和 500 个 ViewBox 单位(在您的情况下是像素的 1/600(1636/623316),然后应用指定的变换,将其缩放 381x 并将其移动 6096 个 viewbox 单位(又名大约 10 像素)在 x 和 y 中。

但您真正的问题是 clipPath 单元正在继承该转换(例如,这些剪辑单元被解释为 (623,316 x 381) 宽度容器中的单元!!)

如果您使用 View 框单位重做图像尺寸,并摆脱变换,一切正常。以下只是粗略估计,您需要拿出计算器才能得到真正的结果 - 但它说明了问题。

<image x="0" y="0" height="323000" width="150000" 
xlink:href="http://www.cutepandapictures.com/wp-
content/uploads/2012/07/babypandahugsatree.jpg" clip-path="url(#randompath)"/>

或者,将所有剪辑路径值除以 500'ish,您会看到一个开始有意义的结果。这是一个将剪辑路径编号除以 1,000 的示例(移动小数点很容易):http://jsfiddle.net/reU7t/

关于html - 将 clipPath 应用于带有变换的图像元素时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19597578/

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