4

我有一个 SVG 容器作为填充整个页面的 Paper。在这个容器中,我以网格模式显示元素。

假设每个形状填充一个 100 x 100 像素大的空间,网格为 500 x 500 像素大。我希望在第一个单元格中具有位置 (0, 0) 的形状,在最后一个单元格中具有位置 (400, 400) 等的形状。

尽管 Snap.SVG 允许为 Paper.rect 和 Paper.circle 等形状设置 x 和 ay(或 cx 和 cy),但似乎没有针对 Paper.path 或 Paper.polyline 的详细记录方法元素。当然,这种行为应该是意料之中的,因为正如官方文档中所指出的,Paper.polyline 是用多个 x 和 y 变量定义的(而 Paper.path 似乎根本没有)。因此,我只设置一个 x 或 y 并期望整个形状移动是没有意义的。但是,这是有问题的,因为我试图多次为 Paper.path 定位相同的设计,而不必更改其原始路径字符串。

虽然我找到了使用 Path.polyline 的解决方法,但它总体上并不理想,尤其是在扩大网格长度时。我应用了一个映射函数,将每个 Paper.polyline 坐标转换为网格中它应该结束的位置。我敢打赌,为我打印的每个形状迭代每个坐标是一个不必要的昂贵过程,并且必须有一种方法为整个元素本身设置全局 x 和 y。

4

1 回答 1

5

我不熟悉 snap.svg,但我必须相信它提供了翻译元素的能力,即将它移动到新的 x,y 位置。通常,通过 svg dom 移动路径,例如...

<path transform="translate(myX myY)" d="...." />
于 2014-04-03T23:11:25.580 回答