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 :

Avoir un zoom sur une image


Sujet :

AWT/Swing Java

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38

    Informations forums :
    Inscription : Avril 2005
    Messages : 277
    Points : 143
    Points
    143
    Par défaut Avoir un zoom sur une image
    Bonjour,

    Je cherche a faire un zoom sur une image grâce à des boutons + et -

    J'ai vu qu'un composant nommé "ZoomableImagePanel" existait mais impossible de mettre la main dessus ...

    Quelqu'un pourrait-il m'aider ?

    Existe il d'autres composants qui permettraient de le faire ?

    Sinon je me le palucherai à la main ...

    Pensez-vous qu'un JXImagePanel fasse l'affaire ?

    Et faudra t'il que je recrée a chaque fois une image plus "zommée" et ensuite la coller dans je JXImagePanel ? Rien de plus simple et de plus optimisé ?

    MErci bcp à vous ^


  2. #2
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    Tu peux faire ça assez simplement avec la méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    drawImage(Image img, AffineTransform xform, ImageObserver obs)
    de la classe Graphics2D.
    - Tu te crées une AffineTransform à laquelle tu passes ton coefficient de zoom en x et en y et le tour est joué !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    AffineTransform aff = new AffineTransform();
    aff.scale(zoomX, zoomY);
    - Tu mets null pour le paramètre ImageObserver de drawImage().
    - Et dans la méthode paintComponent() de ton composant qui doit dessiner l'image, tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public void paintComponent(Graphics g) {
       ((Graphics2D) g).drawImage(img, aff, null);
    }

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38

    Informations forums :
    Inscription : Avril 2005
    Messages : 277
    Points : 143
    Points
    143
    Par défaut
    Ok ... Merci de la réponse ...

    Mais mon zoomX et zoomY seront les même non ?

    De plus pour cette méthode je suis obligé de faire un composant à moi qui va faire un extends du JXImagePanel ...

    Je peux pas faire ca sans créer de composant perso ?

  4. #4
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    Mais mon zoomX et zoomY seront les même non ?
    Tu mets ce que tu veux dans zommX et zoomY : ça peut être la même valeur ou deux valeurs différentes (auquel cas tu auras une image déformée).

    De plus pour cette méthode je suis obligé de faire un composant à moi qui va faire un extends du JXImagePanel ...
    Ouais, mais c'est pas bien sorcier.
    Moi c'est comme ça que je fais dans mon projet, après il existe peut-être une autre méthode. D'ailleurs, je ne suis pas familier avec les composants SxingX donc il existe peut-être un composant qui fait ça tout seul...

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38

    Informations forums :
    Inscription : Avril 2005
    Messages : 277
    Points : 143
    Points
    143
    Par défaut
    ok je sais ca va pas être sorcier d'etendre un composant ...

    Mais bon ...

    Par hasard tu prêterais pas ton composant ??? ^^

    Dans tous les cas merci bcp pour l'aide !!!

  6. #6
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    Malheureusement, c'est confidentiel (mon client ne serait pas content si je divulguer le code de l'appli) et en plus mon composant fait beaucoup plus que d'afficher une image zoomée : possibilité de tracer des formes sur l'image, d'afficher du texte, etc.

    Mais pour info, pour faire ce que tu veux, ça donne à peu près ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class ImageDisplayer extends JComponent implements KeyListener {
         [...]
         protected double zoomFactor=1;
         protected BufferedImage img;
         protected AffineTransform aff;
         [...]
     
         protected void paintComponent(Graphics g) {
              Graphics2D g2=(Graphics2D)g;
              g.drawImage(img, aff, null);
         }
    }
    Après à toi d'initialiser l'image que tu veux afficher et de modifier l'AffineTransform sur le KeyPressed.
    C'est pas plus compliqué que ça.

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38

    Informations forums :
    Inscription : Avril 2005
    Messages : 277
    Points : 143
    Points
    143
    Par défaut
    Oki je vais essayer comme ca alors ...

    Merci quand même ^^

  8. #8
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    De rien.
    Et bon courage ! Ca fait pas de mal de mettre les mains dans le cambouis de temps en temps plutôt que d'utiliser des composants tout fait

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

Discussions similaires

  1. avoir des labels sur une 'Image'
    Par flamel dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 22/09/2007, 19h21
  2. Zoom sur une image
    Par mariemor64 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 26/05/2006, 21h47
  3. Zoom sur une image
    Par flo456 dans le forum Général JavaScript
    Réponses: 35
    Dernier message: 19/05/2006, 08h48
  4. [débutant] zoom sur une image
    Par Anthony17 dans le forum Delphi
    Réponses: 1
    Dernier message: 16/05/2006, 23h09
  5. Zoom sur une image
    Par AurelBUD dans le forum C++Builder
    Réponses: 5
    Dernier message: 07/05/2004, 18h05

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