2013-02-19 56 views
1

会有一种方法可以获取svg路径的尺寸并将其显示在div中吗?边界框不是一个选项,因为在Webkit中,当涉及到贝塞尔曲线时,它是一个bug。我正在做一个修改svg编辑btw:https://code.google.com/p/svg-edit/获取svg路径的尺寸而不使用边框

这是我目前正在使用的。

<script> 
    var myVar=setInterval(function(){getDimensions()},10); 

    function getDimensions() 

    { 

    svgNode = svgCanvas.getSelectedElems()[0]; 


var getw = svgNode.getBoundingClientRect().width; 
var geth = svgNode.getBoundingClientRect().height; 
getw= parseInt(getw); 
geth= parseInt(geth); 
document.getElementById('heightbox').innerHTML = geth; 
document.getElementById('widthbox').innerHTML = getw; 



} 

    </script> 

不幸的是,bounding box是不可靠的。除了bbox以外的任何想法?

回答

5

RaphaelJS具有用于确定路径的边界框的实用工具方法 - http://raphaeljs.com/reference.html#Raphael.pathBBox

var dims = Raphael.pathBBox(pathString); 
var getw = dims.width; 
var geth = dims.height; 
+0

其比使用权的一个IM不同?关于如何使用您的解决方案修改代码的任何想法? – 2013-02-19 04:14:14

+0

它不使用SVG边界框API,而是使用指定路径的边界维数的代数计算。它是一种采用SVG风格路径字符串的静态方法。您应该可以将该库包含在您的项目中,并直接使用该方法。 – Kris 2013-02-19 04:20:39

+0

这是一个简单的例子http://jsfiddle.net/ReEmu/ – Kris 2013-02-19 04:27:25