Hi Michael,

tried this but it didn't work, because I've already used a viewbox attribute in the roote element, if I use the scale attribute on a certain child-element (like ballE in my example), I won't be able to see the whole ball again if the viewbox isn't set big enough... What I want is that I set the viewbox so that it could contain all elements (more than one, another arguments why I can't use your suggestion). As I scale the whole, I should still see all of them. That's why I tried to set the rendering transform, 'cause I saw the original zoom of jsvgcanvas was implemented in this way...
maybe other suggestions?

best,
Cui

Don't transform the canvas, transform the ellipse itself if you want to scale the 
ellipse.  Check the SVG spec for the "transform" attribute.  It'll be something 
like:
ballE.setAttributeNS(null, SVGConstants.SVG_TRANSFORM_ATTRIBUTE, "scale(5, 5)"); Michael Bishop

________________________________

From: Cui Jian [mailto:[email protected]]
Sent: Tue 2/3/2009 12:20 PM
To: [email protected]
Subject: Re: [Scale by constructing???]



Sorry, to make it more understandable, I changed some codes and here
again is the test program...

package resizeText;

import java.awt.Dimension;
import java.awt.geom.AffineTransform;

import javax.swing.JFrame;
import javax.swing.SwingUtilities;

import org.apache.batik.dom.svg.SVGDOMImplementation;
import org.apache.batik.swing.JSVGCanvas;
import org.apache.batik.util.SVGConstants;
import org.w3c.dom.DOMImplementation;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

public class Resizer extends JFrame{

   /**
    *
    */
   private static final long serialVersionUID = 1L;

   private JSVGCanvas canvas;
      private Document svgDoc;
      private static final int ellipseX = 1500;
   private static final int ellipseY = 1000;
      private static final int canvasFixedWidth = 900;
   private static final int canvasFixedHeight = 600;
      public Resizer(){
              this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                  this.canvas = new JSVGCanvas();
       this.canvas.setDocumentState (JSVGCanvas.ALWAYS_DYNAMIC);
              DOMImplementation dom =
SVGDOMImplementation.getDOMImplementation ();
       svgDoc =
           dom.createDocument(SVGConstants.SVG_NAMESPACE_URI,
SVGConstants.SVG_SVG_TAG, null);
              this.initBall();
                      this.canvas.setDocument(svgDoc);
                     this.getContentPane().add(this.canvas, "Center");
              /**
        * here I tried to scale it by setting a new renderingtransform...
        */
       AffineTransform at = canvas.getRenderingTransform();
       at.scale(5, 5);
       canvas.setRenderingTransform(at);
              this.canvas.setMySize(new Dimension(canvasFixedWidth,
canvasFixedHeight));
              this.pack();
              this.setVisible(true);
          }
      private void initBall(){
       Element rootE = svgDoc.getDocumentElement();
       rootE.setAttributeNS(null, SVGConstants.SVG_VIEW_BOX_ATTRIBUTE,
"0 0 "+ellipseX*2+" "+ellipseY*2);
              Element ballE =
svgDoc.createElementNS(SVGConstants.SVG_NAMESPACE_URI,
SVGConstants.SVG_ELLIPSE_TAG);
       rootE.appendChild(ballE);
       ballE.setAttributeNS(null, SVGConstants.SVG_CX_ATTRIBUTE,
""+ellipseX);
       ballE.setAttributeNS(null, SVGConstants.SVG_CY_ATTRIBUTE,
""+ellipseY);
       ballE.setAttributeNS(null, SVGConstants.SVG_RX_ATTRIBUTE,
""+ellipseX);
       ballE.setAttributeNS(null, SVGConstants.SVG_RY_ATTRIBUTE,
""+ellipseY);
   }
      public static void main(String[] args){
       SwingUtilities.invokeLater(new Runnable() {
           public void run() {
               new Resizer();
           }
       });
   }
   }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



------------------------------------------------------------------------

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


--
Dipl. Inform. Cui(Ken) Jian     

German Research Center for Artificial Intelligence
Safe and Secure Cognitive Systems
DFKI-Labor Bremen               Universitaet Bremen, FB3
Sichere Kognitive Systeme       Cartesium 0.051
Robert-Hooke-Str. 5             Enrique-Schmidt-Str. 5
28359 Bremen                    28359 Bremen
http://www.dfki.de              www.informatik.uni-bremen.de/~ken
Tel.: +49 (421) 218-64204
Telefax: +49 (421) 218-98-64204
E-Mail: [email protected] [email protected]
-------------------------------------------------------------
Deutsches Forschungszentrum fuer Kuenstliche Intelligenz GmbH
Firmensitz: Trippstadter Strasse 122, D-67663 Kaiserslautern
Geschaeftsfuehrung:
Prof. Dr. Dr. h.c. mult. Wolfgang Wahlster (Vorsitzender)
Dr. Walter Olthoff
Vorsitzender des Aufsichtsrats:
Prof. Dr. h.c. Hans A. Aukes
Amtsgericht Kaiserslautern, HRB 2313
-------------------------------------------------------------


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to