2013-04-06 74 views
0

我第一次使用raphael,并有一个svg,我使用在线转换器转换为javascript路径。我现在遇到了一个问题 - 路径都有一个.transform对他们,所以我不能在我的脚本中扩展它们(非常令我困惑 - 任何规模的新变量都会使它们成为一两个px 。在每个宽或高)Raphael-使用变换来缩放js路径 - 意外的结果

它们都具有这样的事情,在每个路径变量的末尾:myshape.transform(“m83.018878,0,0,83.018878,-2814.2764,385.12103”)

你可能会摆脱这种转变,或者除了替换现有的转变之外,还有新的转变吗?或者我可以采用另一种方式进行扩展?我不需要任何动画 - 只需要调整页面布局即可。

回答

0

当前的转化矩阵显示* 83比例。使用.transform将重置此变换,并且如果在变换中不使用相同的缩放顺序,则该路径看起来会很小。

这将是很难重构的转换工具的结果代码直接与已经转化

然而坐标路径,动态,您可以通过使用Raphael.transformPath方法得到的转化路径字符串。 您将不得不提供当前的路径字符串,其.attr("path")及其当前的转换字符串为.transform()

另一个更轻的方法是继续使用transform方法,但使用«...»字符串部分附加转换来告诉Raphael它必须重用先前的转换字符串。

+0

非常感谢您的帮助!追加变换确实可以扩展,所以看起来像是朝着正确方向迈出的一步,但问题在于,它会从中心缩放每个形状。这些形状是地图上的区域边界,我之后所做的是缩小整个地图。以为paper.setViewBox可以做到这一点,但迄今没有运气。 – helixmat 2013-04-07 04:01:04

+0

您可以使用'paper.setViewBox'来进行缩放。你首先必须读取前面的viewbox值并重新使用两个第一个值x和y,然后改变最后两个宽度和高度。最后一个参数«fit»应该是false。 – lib3d 2013-04-07 08:35:01

+0

我能够通过使用以下命令将地图缩放在一起:var rsr = Raphael('map','664.938','774.286'); rsr.setViewBox(0,0,1100,1100,FALSE);但由于某种原因,更大的宽度和高度使得事物更小 - 即使在没有矩阵转换问题的小测试路径上。并且,svg占用的区域不会随着路径而缩小,因此页面布局仍然是个问题。似乎我错过了一些非常基本的东西。我正在寻找方法来为地图在页面上占据的整个空间定义一个像素宽度和高度,并将其缩放到该空间。 – helixmat 2013-04-08 15:03:26