所以,让我们说我有一个看起来像这样的SVG:数学变换中的SVG路径值来填充视框
<svg width="800" height="600" viewBox="0 0 800 600" style="border: 1px solid blue;">
\t <path fill="#f00" stroke="none" d="M720 394.5c-27.98 0-51.61-6.96-71.97-18.72-29.64-17.1-52.36-44.37-71.48-75.12-28-45.01-48.31-97.48-71.39-136.52-20.03-33.88-42.14-57.64-73.16-57.64-31.1 0-53.24 23.88-73.31 57.89-23.04 39.05-43.34 91.45-71.31 136.39-19.28 30.98-42.21 58.41-72.2 75.45C195 387.72 171.62 394.5 144 394.5Z"/>
</svg>
正如你所看到的,路径仅占一部分SVG(和viewBox区域)。
我想知道如何转换填充viewBox的路径中的值(实际上是重新缩放和重新定位路径中的值,以便填充整个viewBox)。
[更新]
我增加了一些更多的细节......
以一个例子 - 让说,我开始与视框像这样的SVG:0 0 1600 1600
。
在该SVG中,有一条路径占用从1200,1200
到1500,1400
的区域。 (即,路径是300×200)。
我希望能够提取该路径,并将其添加到视图框为0 0 300 200
的新SVG。
要做到这一点,d
属性中的值需要相应修改 - 基本上向上移动了1200个点并向左移动。
显然,绝对坐标需要改变,但相对坐标不会。 (这应该很容易)。
但我也必须处理曲线及其控制点,这可能会有点棘手。
一个完美的解决方案将能够检查路径,确定可能包含它的最小边界框,然后调整所有点以使它们适合该边界框,并将其固定在0,0
处。
我不想缩放或拉伸路径。
我很喜欢数学过程或函数来做到这一点,或者某种在线工具。
我意识到我可以使用SVG转换来完成此操作,但我希望能够更改实际路径。
(即,我不希望我的网页,包括“不正确”的数据以及变换为“纠正”它,我只是希望我的代码,包括“正确”的数据。)
有一种方法来做到这一点?
[Inkscape中] (http://inkscape.org)可以[冻结转换](http://www.inkscapeforum.com/viewtopic.php?t=10205) – cxw
其他方法可能会更容易:将视图框大小调整为路径。为此,你可以看看:http://stackoverflow.com/q/16377186/1169798 – Sirko
@Sirko - 这是一个好主意,但是SVG中的其他所有*必须与该适配viewBox相关。我真正希望能够做的是从另一个SVG(带有一个任意的viewBox)开始,并使其适应新的SVG。所以 - 我真的需要能够适应路径,而不是viewBox。 – mattstuehler