2011-07-28 12 views
8

Şu anda ana öğesinde (g) bir dönüşüme sahip bir dikdörtgen çiziyorum. Sonuçta oluşan svg şudur; Dönüş sonrasında dikdörtgensel koordinatlar

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

Şimdi dinamik rects birinin koordinatlarını alınmaya çalışılırken, ancak doğru sonucu dönmez getBBox kullanıyorum. Biri rektlerin doğru x, y, genişlik ve yükseklik özelliklerini nasıl elde edeceğimi söyleyebilir mi?

cevap

15

Çözümü kendim buldum;

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

Tam olarak bu işlev için, lol gibi 3 gün aramıştım. Başka cevapların neden kullanmadığını bilmiyorum. – InfernalRapture

+1

, dönüştürülmüş WORLD SPACE koordinatlarını değil, SCREEN SPACE COORDINATE öğesini döndürdüğünü unutmayın. –

İlgili konular