Dessiner des images SVG sur un Composite
Je veux dessiner des images SVG, redimensionnement, rotation, en couleur et avec une couche alpha sur un Composite dans mon application Java. Comment puis-je y parvenir? Il peut y avoir plusieurs de ces images qui se chevauchent.
Je ne sais pas vraiment comment utiliser SVG images en Java oui, veuillez l'expliquer depuis le début, non seulement le processus de rendu 🙂
Merci d'avance!
- Avez-vous essayé une recherche sur Google avant de venir ici?: stackoverflow.com/questions/9939727/svg-to-java-graphics2d
- Oui je l'ai fait, mais je n'ai jamais eu la même question que cela..
Vous devez vous connecter pour publier un commentaire.
Utilisation du Batik (http://xmlgraphics.apache.org/batik/) ou SVGSalamander (https://svgsalamander.java.net/). J'ai utilisé du batik avec succès avant, mais je n'ai pas essayé SVGSalamander.
En batik, il y a une SVG de panneau d'affichage de l'image pour vous et ajouter clavier/raccourcis souris pour le zoom, de panoramique et de la rotation de l'image. Vous pouvez désactiver ces raccourcis et de mettre en œuvre vos propres mécanismes, cependant.
Aussi, avec peu de travail, vous pouvez superposer les images.
Juste être sûr de lire la Faq.
Vous avez besoin pour obtenir l'image SVG dans un type qui peut être affiché par le Composite -- je vais supposer que vous savez déjà comment utiliser
BufferedImage
pour afficher par exemple un PNG, et que vous n'avez pas besoin de modifier le format SVG, juste l'afficher.La clé ici est que Java n'a pas de support natif pour le format SVG. Vous devez utiliser une bibliothèque comme batik de charger et de convertir l'image à un format affichable.
J'ai volé cette réponse de http://bbgen.net/blog/2011/06/java-svg-to-bufferedimage/
D'écrire une simple Transcoder
En utilisant le Transcodeur
Puis, il suffit d'afficher le rendu
BufferedImage
sur votre Composite comme si c'était un PNG, ou quoi que ce soit.