2012-04-10 3 views
5

Mit Raphael 2.0 versuche ich, eine Transformation auf eine Reihe von Objekten in einer Weise anzuwenden, die relativ zu allen Objekten in der Gruppe ist. Der Effekt, den ich bekomme, ist jedoch, dass die Transformation unabhängig von den anderen Objekten im Set einzeln auf jedes Objekt angewendet wird. B. http://jsfiddle.net/tim_iles/VCca9/8/ - Wenn Sie jetzt die letzte Zeile auskommentieren und den Code ausführen, wird jeder Kreis auf 0,5x skaliert. Der eigentliche Effekt, den ich erreichen möchte, wäre die Skalierung des gesamten Satzes von Kreisen, so dass ihre relativen Abstände ebenfalls skaliert werden, was alle vier in den Begrenzungsrahmen des weißen Quadrats bringen sollte.Anwenden einer Transformation auf eine Menge in Raphael.js

Gibt es einen Weg, dies mit den eingebauten Werkzeugen von Raphael zu erreichen?

Antwort

11

Wenn Sie skalieren, ist der erste Parameter die X-Skala. Wenn Sie keine anderen Parameter angeben, wird diese als Y-Skala verwendet und um die Mitte des Objekts skaliert.

Wenn Sie das Rechteck skaliert haben, skalierte es um die Mitte des Rechtecks. Wenn Sie möchten, dass die Kreise auch um diesen Punkt und nicht über deren Zentren skaliert werden, sollten Sie diesen Punkt angeben.

So könnte die letzte Zeile sein set.transform("s0.5,0.5,100,100"); (100.100, im Mittelpunkt des Rechtecks ​​Sie skaliert)

Zumindest ich denke, das ist, was Sie fragen.