【问题标题】:Raphael- using transform to scale js paths- unexpected resultsRaphael - 使用变换来缩放 js 路径 - 意外结果
【发布时间】:2013-04-07 06:35:18
【问题描述】:

我第一次使用 raphael,并且有一个 svg,我使用在线转换器将其转换为 javascript 路径。我现在遇到了一个问题 - 路径上都有一个 .transform ,所以我无法在我的脚本中缩放它们(让我非常困惑 - 任何规模的任何新 .transform 都会使它们变成一两个像素在每个宽或高。)

它们在每个路径变量的末尾都有这样的东西:myshape.transform("m83.018878,0,0,83.018878,-2814.2764,385.12103")

我怎样才能摆脱这种转换,或者除了替换现有的转换之外还有一个新的工作?或者我可以用另一种方式进行缩放吗?我不需要任何动画——只需要根据页面布局进行缩放。

【问题讨论】:

    标签: javascript raphael shapes


    【解决方案1】:

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

    很难将转换工具结果代码重构为直接具有已转换坐标的路径

    但是,您可以动态地使用Raphael.transformPath 方法获取转换后的路径字符串。 您必须提供当前路径字符串,即其.attr("path"),其当前转换字符串为其.transform()。

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

    【讨论】:

    • 非常感谢您的帮助!附加转换确实可以按比例缩放,所以似乎是朝着正确方向迈出的一步,但问题是然后从中心缩放每个形状。这些形状是地图上的区域边界,我所追求的是使整个地图更小。认为 paper.setViewBox 可能会这样做,但到目前为止还没有运气。
    • 您可以使用paper.setViewBox进行缩放。您首先必须读取前一个视图框值并重用前两个值 x 和 y,然后更改最后两个宽度和高度。最后一个参数 «fit» 应为 false。
    • 我能够使用以下方法使地图一起缩放: var rsr = Raphael('map', '664.938', '774.286'); rsr.setViewBox(0,0,1100,1100,false);但由于某种原因,更大的宽度和高度会使事情变得更小 - 即使在没有矩阵变换问题的小测试路径上也是如此。而且,svg 占用的区域不会随着路径而缩小,所以页面布局仍然是一个问题.似乎我错过了一些非常基本的东西。我正在寻找方法来定义地图在页面上占据的整个空间的像素宽度和高度,并让它缩放到那个。
    猜你喜欢
    • 2012-07-16
    • 2011-03-22
    • 1970-01-01
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    • 2012-01-07
    • 2013-08-29
    • 1970-01-01
    相关资源
    最近更新 更多