1

我正在对 svg-edit 进行修改。我正在使用一个函数来根据用户输入的宽度和高度来使路径元素变大或变小。用户选择一个元素并单击一个按钮以启动该功能,该功能采用最后已知的宽度和高度测量值,然后向用户询问新的宽度和高度值。然后它创建一个除数,它用于在元素上创建一个 TRANSFORM MATRIX 操作,以使其与用户想要的一样大。

问题是在变换矩阵时,元素也会改变位置。

我希望当用户被要求提供宽度和高度时,也被要求提供画布上的 x,y 位置,然后将所选元素移动到该位置。

他们是重新定位 svg 元素的一种方式吗?

   function changeDimensions() 

    {
  svgNode = svgCanvas.getSelectedElems()[0];

var dims = Raphael.pathBBox(svgNode.getAttribute('d')); 
lasth = parseInt(dims.height); 
lastw= parseInt(dims.width);

var transformw=prompt("Enter your new width");
var transformh=prompt("Enter your new height");
newW=transformw/lastw;
 newH=transformh/lasth; 

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

4

1 回答 1

2

不同的 svg 元素具有不同的属性,用于定位自己。例如,矩形有 x 和 y 属性,但圆有 cx 和 cy。路径没有单独的属性。

但是,您可能可以从转换中获得所需的东西!大多数 svg 元素将接受一个转换属性,您可以在其中分配翻译。例如

<path d="M10,10L20,100" transform="translate(30,40)"/>

事实上,您可能可以使用相同的变换属性来缩放您的路径。

于 2013-02-20T01:21:38.720 回答