2013-02-17 72 views
0

我写过一个函数,它将调整SVG路径或任何形状的大小。但是,当我使用它的路径确实会调整大小,但不幸的是它也改变了我的svg画布中的位置。在svg-canvas中定位转换后的SVG元素

这是我的功能

function output() 
    { 
     var transformw=prompt("Enter your new width"); 
     var transformh=prompt("Enter your new height"); 
     var lastw = svg_1.getBoundingClientRect().width; 
     var lasth = svg_1.getBoundingClientRect().height; 

     newW=transformw/lastw; 
     newH=transformh/lasth; 
     alert(newH); 
     alert(newW); 

     svgCanvas.changeSelectedAttribute("transform", 
      "matrix(" + newW + ", 0, 0, " + newH + ", 0, 0)"); 

     svgCanvas.recalculateAllSelectedDimensions(); 
    } 

我只想形状被定位在我的画布的右上角,一旦他们得到转化。理想情况下,我希望他们在转换之前拥有相同的x,y位置,但如果原始x,y位置难以实现,我不会介意有一个固定点。

回答

0

我在回答我自己的问题。

当我们使用变换调整SVG元素的大小时,元素相对于我们所做的变换在x,y轴上移动。

为了抵消这种影响,我们只需要具有相同的'转型'的参数虽然负(它移动到比转型做什么相反的方向在元件上施加负翻译。

这我们抵消了转换的定位效果,我们只获得调整大小的效果。