…nevermind, that’s not how you get center X/Y.  Now it stays put for the most part; I’m getting random incorrect translations that I haven’t been able to solve yet.

 

Michael Bishop

 


From: Bishop, Michael W. CONTR J9C880 [mailto:Michael.Bishop@je.jfcom.mil]
Sent: Wednesday, December 07, 2005 12:44 PM
To: batik-users@xmlgraphics.apache.org
Subject: Scaling around a center point...

 

More transform issues!  As you may recall, I add a translate value to move objects around the canvas.  Now I’m working on scaling and I like the scale to be uniform around the center of element.  I get the center point by asking the Element for its bounding box:

 

centerX = boundingBox.getWidth() – boundingBox.getX();

centerY = boundingBox.getHeight() – boundingBox.getY();

 

In the SVG Essentials book I have, it says to scale around a center point, the translate should be set to:

 

translate(-centerX * (factor – 1), -centerY * (factor – 1))

 

Instead of setting the above, I ADD the above to the existing translate if one exists.  However, when I scale, the element stays nowhere near the center point.  I tried simply SETTING the translate values, losing the previous ones and it’s still wrong.  Is there a better technique for scaling around the center of an element, or is my math just wrong somewhere?

 

Michael Bishop