OVH Cloud OVH Cloud

[Batik] Comment apprehender cette API ?

1 réponse
Avatar
sebastiengrillot
Bonjour,
je me retrouve face à un vrai probleme p-e un peu bete mais totalement
bloquant pour moi...
Je vais devoir realiser une application de creation, manipulation et
animation de dessin au format vectoriel. J'ai opté pour le svg (a
premiere vue c'est la seule solution de toute maniere ;) et donc je
vais utiliser l'api batik. Seulement voila, je ne sais pas du tout par
ou prendre le truc ! Dois-je apprendre d'abord jave2d puis batik ?
seulement batik ? mais comment batik fonctionne til ? Je suis biensur
allé plusieurs fois sur xml.apache.org/batik mais sans grand succés.
Je ne comprends pas comment faire pour debuter avec batik (et avec
java au passage :)

Si une ame charitable pouvait m'aider ... je serais preneur car je
galere un truc de ouf !

Amicalement

Seb

1 réponse

Avatar
Arnaud Berger
Bonjour,

Un exemple avec (désolé), des tests commentés.
La partie 2D se passe dans le paint
La partie Batik est simplissime, puisqu'il suffit de créer un objet
SVGGraphics2D que l'on envoie au paint à la place du Graphics2D habituel.
Java2D n'est pas bien compliqué, et cet exemple doit va vous mettre
rapidement le pied à l'étrier pour Batik :


package tests;

import java.awt.AlphaComposite;

import java.awt.Color;

import java.awt.Dimension;

import java.awt.Graphics2D;

import java.awt.Rectangle;

import java.io.IOException;

import java.io.OutputStreamWriter;

import java.io.Writer;

import org.apache.batik.dom.GenericDOMImplementation;

import org.apache.batik.svggen.SVGGraphics2D;

import org.w3c.dom.DOMImplementation;

import org.w3c.dom.Document;


public class SvgGen {
public static void paint(Graphics2D g2d) {
g2d.setPaint(Color.black);
g2d.drawLine(0,5,10,15);
g2d.setPaint(Color.white);
g2d.fill(new Rectangle(0, 0, 200, 200));
g2d.setPaint(Color.red);
g2d.fill(new Rectangle(10, 10, 100, 100));
g2d.rotate(25d);
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.3F));
g2d.setPaint(Color.green);
g2d.fill(new Rectangle(35, 10, 12, 12));
g2d.drawString("Hellow wo'd", 25, 40);
}
public static void main(String [] args) throws IOException {
// Get a DOMImplementation

DOMImplementation domImpl GenericDOMImplementation.getDOMImplementation();
// Create an instance of org.w3c.dom.Document

Document document = domImpl.createDocument(null, "svg", null);
// Create an instance of the SVG Generator

SVGGraphics2D svgGenerator = new SVGGraphics2D(document);
// Ask the test to render into the SVG Graphics2D implementation

SvgGen test = new SvgGen();
paint(svgGenerator);
// Finally, stream out SVG to the standard output using UTF-8

// character to byte encoding

boolean useCSS = true; // we want to use CSS style attribute

Writer out = new OutputStreamWriter(System.out, "UTF-8");
svgGenerator.setSVGCanvasSize(new Dimension(200,200));
svgGenerator.stream(out, useCSS);
// écrire le graphics en jpeg

/*BufferedImage image = new BufferedImage(200, 200,
BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = image.createGraphics();
paint(g2);
g2.dispose();
ImageIO.write(image, "png", new File("example.png"));*/

}
/*

private AlphaComposite makeComposite(float alpha) {
int type = AlphaComposite.SRC_OVER;
return(AlphaComposite.getInstance(type, alpha));
}

private void drawSquares(Graphics2D g2d, float alpha) {
Composite originalComposite = g2d.getComposite();
g2d.setPaint(Color.blue);
g2d.fill(blueSquare);
g2d.setComposite(makeComposite(alpha));
g2d.setPaint(Color.red);
g2d.fill(redSquare);
g2d.setComposite(originalComposite);
}*/



}

Cordialement,
Arnaud

"Grillot S?bastien" a écrit dans le message
news:
Bonjour,
je me retrouve face à un vrai probleme p-e un peu bete mais totalement
bloquant pour moi...
Je vais devoir realiser une application de creation, manipulation et
animation de dessin au format vectoriel. J'ai opté pour le svg (a
premiere vue c'est la seule solution de toute maniere ;) et donc je
vais utiliser l'api batik. Seulement voila, je ne sais pas du tout par
ou prendre le truc ! Dois-je apprendre d'abord jave2d puis batik ?
seulement batik ? mais comment batik fonctionne til ? Je suis biensur
allé plusieurs fois sur xml.apache.org/batik mais sans grand succés.
Je ne comprends pas comment faire pour debuter avec batik (et avec
java au passage :)

Si une ame charitable pouvait m'aider ... je serais preneur car je
galere un truc de ouf !

Amicalement

Seb