Hi Alan,
I answered this question recently.
Here is a snap of my source code :
public void setSVGAffineTransformation(){
AffineTransform tx = svgCanvas.getRenderingTransform();
// Zoom Level
tx.setToScale(zoomLevel(),zoomLevel());
// The user want to rotate ???
if(Main.getFenetrePrincipale().getZoomControl().getAngleRotation() != 0){
// Sinus of Rotation angle
double sinA =
Math.sin(Main.getFenetrePrincipale().getZoomControl().getAngleRotation());
// Do the rotation on the center of the picture
tx.rotate(Main.getFenetrePrincipale().getZoomControl().getAngleRotation(),
Main.getFenetrePrincipale().getFenetreManuscrit().getPaintCanvas().getImage().getWidth(null)
/2,
Main.getFenetrePrincipale().getFenetreManuscrit().getPaintCanvas().getImage().getHeight(null)/2);
// Do the translation, depend on the sinus
if(sinA == 1)
{
tx.translate(-sinA *
Main.getFenetrePrincipale().getFenetreManuscrit().getPaintCanvas().getRect().getX(),
-sinA *
Main.getFenetrePrincipale().getFenetreManuscrit().getPaintCanvas().getRect().getY());
}
else
{
tx.translate(sinA *
Main.getFenetrePrincipale().getFenetreManuscrit().getPaintCanvas().getRect().getX(),
sinA *
Main.getFenetrePrincipale().getFenetreManuscrit().getPaintCanvas().getRect().getY());
}
}
// set the rendering :)
svgCanvas.setRenderingTransform(tx);
}
The wrong position of the JSVGCanvas was due to a mathematical error :)
Check the translate method.
Hope this will help
Alan Deikman wrote:
>
> Thomas Palfray wrote:
>> Thanks for your answer.
>>
>> [email protected] a écrit :
>>>
>>> Hi Thomas,
>>>
>>> Thomas Palfray <[email protected]> wrote on 10/25/2008
>>> 05:08:39 AM:
>>>
>>> > Well, i'm working on an application wich need to rotate a JSVGCanvas
>>> > (90°, 180°, 270°). I used AffineTransform and the method
>>> > setRenderingTransform like that :
>>>
>>> If you only need to support 90, 180 & 270 deg rotations.
>>> I would suggest simply hard coding the correction factors.
>>> For 90deg it will be a translate in X by the height before rotation.
>>> for 180 deg it will be translate in X by the width and
>>> in Y by the height (both before rotation), for 270 a
>>> translate in Y by the width before rotation.
> I'm having the same problem -- I have a JSVGCanvas I want to paint in
> different orientations. I have tried the setRenderingTransform()
> method with no success -- it just gets overwritten by some other logic
> within batik with the identity transform when the component is resized.
>
> Question: at what point can setRenderingTransform(at, true) be used or
> is meaningful within the lifecycle of GVT rendering process?
>
> Another question -- is there anything to read to understand the usage of
> the different transforms in JSVGCanvas? You have the initial
> transform, rendering transform, viewing transform, viewbox transform,
> and painting transform.
>
> Thanks in advance for any pointers.
>
> --
> Alan Deikman
> ZNYX Networks
>
>
>
--
View this message in context:
http://www.nabble.com/JSVGCanvas-Rotation-with-AffineTransform-tp20162475p22472250.html
Sent from the Batik - Users mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]