2011-07-28 13 views
8

Obecnie rysuję prostokąt z transformacją na jego elemencie macierzystym (g). Wynikowy svg jest taki;Współrzędne prostokąta po transformacji

<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> 

Teraz próbuję odzyskać współrzędne jednego z rects się dynamicznie, ale przy użyciu getBBox nie zwraca poprawny wynik. Czy ktoś może mi powiedzieć, jak uzyskać prawidłowe właściwości x, y, width i height jednego z rectów?

Odpowiedz

15

Sam znalazłem rozwiązanie;

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

Szukałem jak 3 dni, dla dokładnie tej funkcji, lol. Nie wiem, dlaczego inne odpowiedzi go nie używają. – InfernalRapture

+1

uwaga, że ​​zwraca COORDINATE SCREEN SPACE, a nie rzeczywiste przekształcone współrzędne WORLD SPACE. –

Powiązane problemy