【问题标题】:Troubles resizing SVG in Raphael在 Raphael 中调整 SVG 大小的问题
【发布时间】:2011-06-18 16:52:22
【问题描述】:

我正在尝试使用 raphael 绘制 this svg of europe。对于 svg 中的每条路径,我已经对其进行了解析并执行了:r.path([countrypath])。这行得通,但问题是它是巨大的。例如,一些路径看起来像 M 11689.234, 6005.2561... 它甚至不适合 500x500 画布。我该如何调整这个大小?拉斐尔的比例/翻译似乎不起作用,或者我不知道如何使用它。我注意到在 SVG 中每个路径都有transform="translate(5.875e-4,7.538462e-5)" 我需要以某种方式更改视图框吗?或者在触及 Raphael 之前以某种方式更改 svg 路径?

【问题讨论】:

    标签: svg raphael viewbox


    【解决方案1】:

    你可以使用 scale(Xtimes,Ytimes,centreX,centreY)

    其中 Xtimes,Ytimes 是缩小比例,如果选择 0.2,图像将缩小到 1/5

    centreX, centerY 是相对坐标,您应该选择 0,0,以便 svg 的所有路径/部分都均匀且相对地按比例缩小

    如果您选择 scale(0.2,0.2,0,0),您的图像将正确缩小到 1/5

    【讨论】:

      【解决方案2】:

      我昨天实际上从世界上挑选了一个相当大的 SVG,并通过 SVGTOHTML 转换器将其输入。 您将找到该工具和相关信息@ http://www.irunmywebsite.com/raphael/svgsource.php

      我为 Raphael @ 设置了一大堆资源 http://www.irunmywebsite.com/raphael/raphaelsource.php 其中你会发现被Zeven提供的比例岩体包裹的世界地图!

      20 分钟的练习提供了这个... http://www.irunmywebsite.com/raphael/colourmap2.php

      希望这对您或将来遇到类似问题的人有所帮助。 另请注意,您可以在 SVG 编辑器中简化路径并在将它们放入 SVGTOHTML 转换器之前对其进行缩放。 很多时候地图可以绘制得非常详细,但简化它们会大大缩短路径长度。

      【讨论】:

      • 还有d-maps.com。看看这个基于维基百科地图和来自 d-maps.com 的世界地图的并排比较会很有趣。
      【解决方案3】:

      您有两个选择,要么使用我所做的,使用 .transform("transform string") 来缩放路径,变换字符串可以是 sww,hh,xx,yy 其中 ww 和hh 是您想要缩放路径的程度。

      .transform("s0.25,0.25,0,0");
      

      您可以找到EXAMPLE HEREjsfiddle HERE. 或者使用

      paper.scaleAll(n);
      

      其中 n 是您想要缩放整张纸的数量。首先在页面中创建路径,然后将纸张对象缩放一半

      paper.scaleAll(0.5);
      

      您可以在以下链接中找到 Scale.Raphaeljs 库的库和示例: Scale Raphael library

      【讨论】:

        【解决方案4】:

        翻译这么少似乎有点浪费,反正它是~0,我怀疑如果你去掉看起来像那样的变换属性,你会看到很大的不同。

        是的,更改 viewBox 可以使其适合所有支持 SVG 的查看器中的任何内容,但 raphael 本身不支持 viewBox(您必须自己提供一些 VML 后备)。

        要么预处理路径数据以适合您的特定用途(无论如何这可能是一个好主意,它总是有助于减小文件大小,维基百科地图通常非常大)或使用 raphael 的缩放功能到scale the paths to a proper size

        更新:Raphaël v2.0 及更高版本支持 viewBox(通过setViewBox method)。

        【讨论】:

          【解决方案5】:

          您可以使用 Raphael attribute 'translation',它采用 x,y 增量。即:

          r.path([countryPath]).attr({translation:'-11689, -6005'});
          

          为了使其对多个路径更可重用,您可以从 svg 路径中​​的 M 解析 x 和 y 值。当我这样做时,事实证明我不希望我的路径正好在 0,0 上,因为它也将它发送到画布上——可能需要根据元素的高度和宽度进行一些调整。

          【讨论】:

            猜你喜欢
            • 2021-09-18
            • 2013-06-13
            • 1970-01-01
            • 1970-01-01
            • 2015-03-11
            • 2012-08-03
            • 1970-01-01
            • 2014-01-08
            • 2011-03-08
            相关资源
            最近更新 更多