2011-07-28 55 views
8

我目前正在用他的父元素(g)繪製一個帶有變換的矩形。 生成的svg是這樣的;變換後的矩形座標

<svg version="1.1" width="1055" height="381"> 
    <g transform="rotate(120)"> 
     <rect x="0" y="0" width="100" height="100" rx="10" ry="0" stroke-width="0" style="stroke:rgb(0,0,0)" id="rect-0"></rect> 
     <rect x="100" y="0" width="100" height="100" rx="10" ry="0" stroke-width="0" style="stroke:rgb(0,0,0)" id="rect-1"></rect> 
    </g> 
</svg> 

現在我試圖找回rects動態的一個座標,但使用getBBox不返回正確的結果。任何人都可以告訴我如何獲得其中一個rects的正確的x,y,寬度和高度屬性?

回答

15

我自己找到了解決方案;

var matrix = shape.getCTM(); 

// transform a point using the transformed matrix 
var position = svg.createSVGPoint(); 
position.x = $(shape).attr("x"); 
position.y = $(shape).attr("y"); 
position = position.matrixTransform(matrix); 
+1

我一直在尋找像3天,正是這個功能,哈哈。我不知道爲什麼其他答案不使用它。 – InfernalRapture

+1

要注意它返回的是SCREEN SPACE COORDINATE而不是實際轉換後的WORLD SPACE座標。 –