
The top left square is our control, no transforms are applied to it. The top right square is rotated 45 degrees around its center, you'll notice that the rotation angle needs to be defined only. The bottom left square has a scale transforms applied over the X axis, notice that it continues to be centered along the X axis at x=100, same as the control square. The last square has all 3 kinds of transforms applied to it, if you're careful you'll see that its center is displaced 20 units across the X axis when compared to the top right square, it is also aligned in the Y axis to the bottom left, meaning that neither rotation nor scaling affected it in an unexpected way. Here is the code that shows how the squares were setup
The good thing about local transforms is that they will work on images, groups and even custom nodes too, as shown by the following pic

I'm reusing the sphere custom node shown on a previous post with a new addition: a bullseye at its center. A few local transforms are applied to the red, green and yellow spheres, the blue serves as control, lastly a red square is drawn over small red circles that are pinned to the center of each sphere before they were affected by their respective transforms, showing that only the yellow one is off center because it is the one that has translation transforms applied, here is the code
While local transforms are much better that what it was previously available there are still a few kinks, the keen observer would have noticed that even though the squares in the first picture are rotated 45 degrees their respective paint is not! local transforms affect the node's shape but not how it is filled/painted while regular transforms affect how a node is painted, because those transforms affect the current graphics context not just the shape.
Another breakthrough in the current development version are plugins, previously known as extensions. Loading an extension in the old way was bothersome and rather inextensible (even though they were named extensions, silly? I know!), GfxBuilder now relies in Jdk6's ServiceLoader facility to load its plugins. In other words, GfxBuilder requires Jdk6 as its minimum Java version. Yup, you read that right, if you really want to have great Java2D/Swing performance with Java you need Jdk6, I'm sorry about those on OSX that can't upgrade, maybe SoyLatte or OpenJDK7 can help you. The currently supported plugins are:
- swingx - adds the morph shape. Use it to morph any two shapes.
- svg - adds the xpath shape, an extended version of path that supports arcTo as a path segment. It also adds an SVGRenderer, meaning you can save your nodes as SVG. An SVG to GFX converter will be provided as well.
Keep on Groovying!