IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

[Batik] - zoom avec JSVGCanvas (RenderingTransform)


Sujet :

AWT/Swing Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 141
    Points : 139
    Points
    139
    Par défaut [Batik] - zoom avec JSVGCanvas (RenderingTransform)
    Bonjour,

    j'essaye d'utiliser le JSVGCanvas de batik pour affiche un simple document svg.
    Jusque là, tout va très bien, après le jsvgCanvas.setUri("...") le document s'affiche et j'ai les interactors classiques via la souris: zoom, pan, rotate, ...

    par contre je voudrais appliquer les memes modifications (zoom, rotate,...) via le code. Après avoir lu la doc, j'ai essayé de modifier la RenderingTransform:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    jSVGCanvas.setRenderingTransform(AffineTransform.getScaleInstance(2,2));
    Mais c'est comme si le zoom n'avait pas d'effet...
    Qqun a-t-il déjà travaillé avec batik ?

    Merci d'avance

    PS: Batik 1.7b1, JDK 1.6 et Netbeans 5.5.1

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2005
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    Salut, j'ai le même problème que toi donc si quelqu'un a une réponse, je suis aussi preneur.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 141
    Points : 139
    Points
    139
    Par défaut
    J'ai également tenté en modifiant la ViewingTransform, et aussion concatenant l'affine transform avec la rendering et aussi la viewing transform mais rien...
    en fait j'ai l'impression qu'il ya une sorte de reset transform qui se passe qqpart et qui fait que les modifications tombent à l'eau.

    voilà pour mes quelques tests jusqu'ici

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2005
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    Pour l'instant, j'ai l'impression que je ne peu que récupérer les valeurs mais je ne peu pas les modifier, en tout cas sur l'API, je n'ai pas trouvé de méthode permettant de modifier ces valeurs.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 141
    Points : 139
    Points
    139
    Par défaut
    Voici une piste qui confirme ce que j'avais lu qqpart sur le setGraphicsNode():
    http://mail-archives.apache.org/mod_...s.kodak.com%3e

    en fait le problème viendrait du refresh() appelé automatiquement et/ou du fait que j'essaye d'appliquer un scale avant la fin du premier rendu...

    Je vais essayer de tester si j'ai le temps. Mais en attendant si ça peut aider

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2005
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    désolé pour la réponse tardive, j'étais en vacances.

    merci pour le lien, je vais jeté un coup d'oeil de mon coté aussi

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 141
    Points : 139
    Points
    139
    Par défaut
    Hé bien en fait je viens aussi de m'y remettre et j'ai une "solution".
    En fait j'avais pas assez fait attention à l'exemple de batik pour l'utilisaiton du composant swing (http://xmlgraphics.apache.org/batik/using/swing.html)
    J'ai donc, un peu comme dans le lien avant, essayer d'appliquer la transformation après la phase rendering.
    Avec ce code-ci, ça fonctionne mais c'est pê pas encore l'idéal :s
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    svgCanvas.addGVTTreeBuilderListener(new GVTTreeBuilderAdapter() {
                public void gvtBuildStarted(GVTTreeBuilderEvent e) {
                    // Build Started
                }
                public void gvtBuildCompleted(GVTTreeBuilderEvent e) {
                    // Build Done
                    svgCanvas.setRenderingTransform(AffineTransform.getScaleInstance(2,2));
                }
            });
    Voilà, mais je reste preneur si qqun a une meilleure solution

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2005
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    oho super intéressant, je vais essayer d'appliquer ça merci

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2005
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    Ouai ça marche, depuis ma fenêtre qui contient le SVGCanvas, j'ai mis cette commande lors du clique de la souris et ça marche bien. Je pourrai implémenter tout ça un peu plus tard

    Pour le moment je suis sur un problème de mémoire, lorsque je ferme une fenêtre contenant un svg, je n'arrive pas a récupérer la mémoire. et donc au bout d'un certain temps, ben le prog plante.

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 141
    Points : 139
    Points
    139
    Par défaut
    ok je suppose que c'est donc "résolu"
    par contre je ne vois pas bien où tu ajoutes l'appel à la function dans ton code ?

    (sinon pour la mémoire est-ce que tu fermes bien le fichier, et tu ne gardes aucune références vers la frame et/ou le canvas ?)

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2005
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    Alors pour être plu sprécis sur l'endroit ou j'ai mis l'appel a la méthode, c'est dans la méthode mouseClicked implémenter dans un JInternalFrame(JFrame quoi) qui contient le SVGCanvas.

    Pour la mémoire, oui, j'ai mis des null partout mais j'ai l'impression que c'est la librairie Batik qui crée 2 thread que je n'arrive pas a fermer et je pense que c'est elles qui prennent touts la mémoire. (j'espère que je me trompe...)

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    142
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 142
    Points : 93
    Points
    93
    Par défaut
    Bonjour,

    je n'avais pas encore vu cette discution donc désolée si j'arrive un peu tard.
    Je bosse sur un projet avec batik et l'importation de svg et la seule solution que j'ai trouvé pour forcer le zoom dans le code c'est bien SetRenderingTransform!
    voila, c'était juste pour confirmer ce que vous disiez.....

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Faire un zoom avec adobe première element.
    Par Torim dans le forum Vidéo
    Réponses: 17
    Dernier message: 25/08/2007, 15h17
  2. Probleme de zoom avec scrollpane
    Par SQUAL dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 19/01/2007, 22h49
  3. probleme avec le zoom avec une modification d'image
    Par yoyo59650 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 22/02/2006, 10h22
  4. zoom avec un formulaire?
    Par ft035580 dans le forum Access
    Réponses: 9
    Dernier message: 18/02/2006, 02h27
  5. Zoom avec du TJPEG
    Par Thylia dans le forum C++Builder
    Réponses: 3
    Dernier message: 17/06/2002, 17h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo