2011-07-28 44 views
8

Tôi hiện đang vẽ một hình chữ nhật có phép biến đổi trên phần tử cha của mình (g). Kết quả là svg;tọa độ hình chữ nhật sau khi chuyển đổi

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

Bây giờ tôi đang cố gắng để lấy tọa độ của một trong những rects động, nhưng sử dụng getBBox không trả lại kết quả chính xác. Bất cứ ai có thể cho tôi biết làm thế nào để có được đúng x, y, chiều rộng và chiều cao tài sản của một trong những rects?

Trả lời

15

Tôi đã tự tìm ra giải pháp;

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

Tôi đã tìm kiếm như 3 ngày, cho chính xác chức năng này, lol. Tôi không biết tại sao các câu trả lời khác không sử dụng nó. – InfernalRapture

+1

hãy cẩn thận rằng nó trả về không gian SCREEN SPACE COORDINATE và không phải là các tọa độ WORLD SPACE được thay đổi thực tế. –

Các vấn đề liên quan