Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1809 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [Java | Batik] Demande d'aide pour aller plus loin

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Java | Batik] Demande d'aide pour aller plus loin

n°1086427
zor_k
Posté le 17-05-2005 à 11:38:36  profilanswer
 

Bonjour,
je m'interresses à Batik depuis quelques temps maintenant car je dois developper en Java une appli de création et d'animation de dessin vectoriel.
Seulement voila, j'ai beaucoup de mal à comprendre le fonctionnement de batik.
J'ai bien entendu lu ce qui se trouve à l'adresse xml.apache.org/batik, lu le wiki et son contenu, lu le (tres) mini howto sur carto.net... et en plus je decortique l'appli GLIPSGraffiti mais je rames c'est un truc de dingue. Alors voila, je me lance, je n'arrive pas du tout à gerer le DnD (par exemple). Bien entendu j'ai lu l'exemple du WiKi mais ca reste super obscure pour moi. L'on m'a dit qu'il fallait rajouter id="draggables"> mais comment faire ? Et apres si je me contente de copier coller le code du wiki ca passe pas...
 
De plus, je ne comprends pas à quoi sert un Jscrollpane, je le vois souvent mais quel est son utilité par rapportà un svgcanvas ?
 
Je penses que je dois poser des questions un peu "bete" mais je rame tellement c'est dingue, j'arrete pas de lire de la doc mais j'avance à la vitesse d'un escargot...
 
Voici le peu que j'ai reussi à faire :
 

Code :
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import java.awt.geom.Ellipse2D;
  4. import java.io.*;
  5. import javax.swing.*;
  6. import org.apache.batik.dom.svg.SVGDOMImplementation;
  7. import org.apache.batik.svggen.SVGGraphics2D;
  8. import org.apache.batik.swing.gvt.GVTTreeRendererAdapter;
  9. import org.apache.batik.swing.gvt.GVTTreeRendererEvent;
  10. import org.apache.batik.swing.svg.SVGDocumentLoaderAdapter;
  11. import org.apache.batik.swing.svg.SVGDocumentLoaderEvent;
  12. import org.apache.batik.swing.svg.GVTTreeBuilderAdapter;
  13. import org.apache.batik.swing.svg.GVTTreeBuilderEvent;
  14. import org.w3c.dom.DOMImplementation;
  15. import org.w3c.dom.Document;
  16. import org.w3c.dom.Element;
  17. import org.w3c.dom.svg.SVGDocument;
  18. import shape.ShapeCircle;
  19. import shape.ShapeRectangle;
  20. public class SVGApplication {
  21. public static void main(String[] args) {
  22.  JFrame.setDefaultLookAndFeelDecorated(true);
  23.  JFrame f = new JFrame("Batik" );
  24.  SVGApplication app = new SVGApplication(f);
  25.  f.getContentPane().add(app.createComponents());
  26.  f.addWindowListener(new WindowAdapter() {
  27.   public void windowClosing(WindowEvent e) {
  28.    System.exit(0);
  29.   }
  30.  });
  31.  f.setSize(400, 400);
  32.  f.setVisible(true);
  33. }
  34. ImageIcon convertIconCircle = createImageIcon("icons/circle.png","Cercle" );
  35. ImageIcon convertIconRectangle = createImageIcon("icons/rect.png","Rectangle" );
  36. ImageIcon convertIconEllipse = createImageIcon("icons/ellipse.png","Ellipse" );
  37. ImageIcon convertIconProperties = createImageIcon("icons/properties.png","Properties" );
  38. static protected JFrame frame;
  39. JButton button = new JButton("Load..." );
  40. JButton buttonProperties = new JButton(convertIconProperties);
  41. JButton buttonCircle = new JButton(convertIconCircle);
  42. JButton buttonRectangle = new JButton(convertIconRectangle);
  43. JButton buttonEllipse = new JButton(convertIconEllipse);
  44. static protected JLabel label = new JLabel();
  45. Canvas svgCanvas  = new Canvas();;
  46. public SVGApplication(JFrame f) {
  47.  frame = f;
  48. }
  49. public JComponent createComponents() {
  50.  final JPanel panel = new JPanel(new BorderLayout());
  51.  JPanel p = new JPanel(new FlowLayout(FlowLayout.LEFT));
  52.  p.add(button);
  53.  p.add(buttonProperties);
  54.  p.add(buttonCircle);
  55.  p.add(buttonRectangle);
  56.  p.add(buttonEllipse);
  57.  p.add(label);
  58.  panel.add("North", p);
  59.  panel.add("Center", svgCanvas);
  60.  // Set the button action.
  61.  button.addActionListener(new ActionListener() {
  62.   public void actionPerformed(ActionEvent ae) {
  63.    JFileChooser fc = new JFileChooser("." );
  64.    int choice = fc.showOpenDialog(panel);
  65.    if (choice == JFileChooser.APPROVE_OPTION) {
  66.     File f = fc.getSelectedFile();
  67.     try {
  68.      svgCanvas.setURI(f.toURL().toString());
  69.     } catch (IOException ex) {
  70.      ex.printStackTrace();
  71.     }
  72.    }
  73.   }
  74.  });
  75.  buttonProperties.addActionListener(new ActionListener() {
  76.   public void actionPerformed(ActionEvent ae) {
  77.    svgCanvas = new Canvas();
  78.   }
  79.  });
  80.  buttonCircle.addActionListener(new ActionListener() {
  81.   public void actionPerformed(ActionEvent ae) {
  82.    Document doc =svgCanvas.getDocument();
  83.    ShapeCircle circle = new ShapeCircle(doc,svgCanvas.getSvgNamespaceURL());
  84.    svgCanvas.setDocument(doc);
  85.   }
  86.  });
  87.  buttonRectangle.addActionListener(new ActionListener() {
  88.   public void actionPerformed(ActionEvent ae) {
  89.    Document doc =svgCanvas.getDocument();
  90.    ShapeRectangle rectangle = new ShapeRectangle(doc, svgCanvas.getSvgNamespaceURL());
  91.    svgCanvas.setDocument(doc);
  92.   }
  93.  });
  94. return panel;
  95. }
  96. protected static ImageIcon createImageIcon(String path, String description) {
  97.  java.net.URL imgURL = SVGApplication.class.getResource(path);
  98.  if (imgURL != null) {
  99.   return new ImageIcon(imgURL, description);
  100.  } else {
  101.   System.err.println("Couldn't find file: " + path);
  102.   return null;
  103.  }
  104. }


Code :
  1. import java.awt.AlphaComposite;
  2. import java.awt.Color;
  3. import java.awt.Font;
  4. import java.awt.Shape;
  5. import java.awt.geom.*;
  6. import org.apache.batik.dom.svg.SVGDOMImplementation;
  7. import org.apache.batik.svggen.SVGGeneratorContext;
  8. import org.apache.batik.svggen.SVGGraphics2D;
  9. import org.w3c.dom.DOMImplementation;
  10. import org.w3c.dom.Document;
  11. import org.w3c.dom.Element;
  12. import org.w3c.dom.svg.SVGDocument;
  13. public class MySVGGenerator{
  14. public MySVGGenerator(Document doc, String svgNamespaceURL) {
  15.    Element rect = doc.createElementNS(svgNamespaceURL,"rect" );
  16.   rect.setAttributeNS(null,"x","10" ); rect.setAttributeNS(null,"y","20" );
  17.   rect.setAttributeNS(null,"width","100" );
  18.    rect.setAttributeNS(null,"fill-opacity","0.7" );
  19.    rect.setAttributeNS(null,"height","50" );
  20.   rect.setAttributeNS(null,"style","fill:red" );
  21.   Element svgRoot = doc.getDocumentElement();
  22.   Shape circle = new Ellipse2D.Double(0, 0, 50, 50);
  23.   g.setPaint(Color.BLUE);
  24.   g.fill(circle);
  25.   g.getRoot(svgRoot);
  26.   svgRoot.appendChild(rect);
  27. }
  28. }


Code :
  1. package shape;
  2. import org.apache.batik.svggen.SVGGeneratorContext;
  3. import org.apache.batik.svggen.SVGGraphics2D;
  4. import org.w3c.dom.DOMImplementation;
  5. import org.w3c.dom.Document;
  6. import org.w3c.dom.Element;
  7. import org.w3c.dom.svg.SVGDocument;
  8. /**
  9. * @author Grillot
  10. *
  11. * TODO Pour changer le modèle de ce commentaire de type généré, allez à :
  12. * Fenêtre - Préférences - Java - Style de code - Modèles de code
  13. */
  14. public class ShapeCircle {
  15. // private static ImageHandler ihandler = (ImageHandler) new CachedImageHandlerPNGEncoder("res/images",null);
  16. private DOMImplementation domImpl;
  17. private Document myFactory;
  18. private SVGGeneratorContext ctx;
  19. private SVGGraphics2D svgGenerator;
  20. private SVGDocument doc;
  21. private String svgNS;
  22. public ShapeCircle(Document doc, String svgNamespaceURL) {
  23.    Element circle = doc.createElementNS(svgNamespaceURL,"circle" );
  24.    circle.setAttributeNS(null,"cx","10" );
  25.    circle.setAttributeNS(null,"cy","20" );
  26.    circle.setAttributeNS(null,"r","25" );
  27.    circle.setAttributeNS(null,"style","fill:red" );
  28.   Element svgRoot = doc.getDocumentElement();
  29.   svgRoot.appendChild(circle);
  30. }
  31. //cx="60" cy="60" r="40"
  32. }


Ah oui en plus, comment faire pour pouvoir utiliser la transparence ou juste la bordure des elements avec des svggraphics2D car pour le moment je ne sais pas le faire differement qu'avec le code ci dessus...
 
En esperant de tout coeur un p'tit coup de pouce !
 
Amicalement
 
Seb

mood
Publicité
Posté le 17-05-2005 à 11:38:36  profilanswer
 

n°1086871
zor_k
Posté le 17-05-2005 à 16:44:56  profilanswer
 

:hello:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [Java | Batik] Demande d'aide pour aller plus loin

 

Sujets relatifs
Le xml en java, et programme en tache de fond...[Java] Reverse engineering avec ArgoUml
[java] Enregistrer une image dans un fichier.aide pour remplacement de mots dans une page web
besoin d'aide pour faire une page dynamiqueProblème d'insertion java
Java 3DAide pour le C
Compilation d'un programme java 
Plus de sujets relatifs à : [Java | Batik] Demande d'aide pour aller plus loin


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR