Does the root SVG element have a width, height, and/or viewBox? THat's what the JSVGCanvas uses to determine what it will display. You shouldn't have to scale the document at all: <svg width="3000" height="2000" viewBox="0 0 3000 2000" ...> Michael Bishop
________________________________ From: Cui Jian [mailto:[email protected]] Sent: Thu 12/18/2008 9:19 AM To: [email protected] Subject: [Help with showing the whole svg] Dear Batik-Experts, am having trouble displaying a whole svg file. This file (3000*2000) is bigger than the gui with a fixed size(500, 300), so after I set the svg file to the canvas, I tried to scale the file to fit in the gui, but somehow it doesn't work... Could anyone please take a look at the sample codes below and tell me why I failed or how I can do scale the file to fit the gui please? best regards, Cui ------------------------------------------------------------------------------------------------ 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 = 500; private static final int canvasFixedHeight = 300; 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"); double scale = Math.min(canvasFixedWidth/(double)(ellipseX*2), canvasFixedHeight/(double)(ellipseY*2)); AffineTransform at = canvas.getRenderingTransform(); at.scale(scale, scale); canvas.setRenderingTransform(at); this.canvas.setMySize(new Dimension(canvasFixedWidth, canvasFixedHeight)); this.pack(); this.setVisible(true); } private void initBall(){ Element ballE = svgDoc.createElementNS(SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_ELLIPSE_TAG); svgDoc.getDocumentElement().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]
<<winmail.dat>>
--------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
