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

avec Java Discussion :

Zoom à la souris


Sujet :

avec Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Zoom à la souris
    bonjour,

    je travaille actuellement sur un projet de zoom à la souris mais je n'arrive pas à le faire fonctionner correctement.
    si quelqu'un pouvait me donner un exemple de code fonctionnel ou des indications sur comment y arriver ce serait gentil. le mien ne zoom que dans le coin en haut à gauche et j'aimerais que le zoom se fasse sur le pointeur de souris :s

    merci par avance pour l'aide je trouve ca vraiment pas evident

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Citation Envoyé par stef_nancy Voir le message
    merci par avance pour l'aide je trouve ca vraiment pas evident
    Avec si peu d'indice et de code, nous non plus !
    Il faut que tu recalcules la position du truc sur lequel tu zoomes.
    Sans plus d'info, impossible de t'aider.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 121
    Points : 136
    Points
    136
    Par défaut
    Cherche zoom java sur google.. Il y a quelques exemples sur internet...

    Sur ce site ...
    http://www.developpez.net/forums/d29...ing/zoom-java/

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Voila le code,

    Merci, pour le coup de main.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    public static void main(String[] args) 
     {
      JFrame demo = new JFrame();
      demo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      demo.add(new ZoomPanel());
      demo.pack();
      demo.setVisible(true);
     }
     
     
     public ZoomPanel() 
     {
      super();
      initializePanel();
     }
     private void initializePanel() 
     {
      setPreferredSize(new Dimension(1024, 768));
      try 
      {
       sourceImage = ImageIO.read(new File("c:/PDF995/testloreal.jpg"));
       sourceImageWidth = sourceImage.getWidth();
       sourceImageHeight=sourceImage.getHeight();
       addMouseWheelListener(this);
      } 
      catch (IOException e) 
      {
       e.printStackTrace();
      }
     }
     public void paint(Graphics g)
     {
      RenderingHints rh = new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); 
            AffineTransform at = new AffineTransform(); 
            at.scale(zoom, zoom); 
            AffineTransformOp ato = new AffineTransformOp(at, rh); 
            BufferedImage zoomedImage = ato.filter(sourceImage, null);
      g.drawImage(zoomedImage,0,0,null);
     }
     public void mouseMoved(MouseEvent e)
     {
      xMouse = e.getX();
            yMouse = e.getY();
     }
     
     public void mouseWheelMoved(MouseWheelEvent e) 
     {
      double wheelRotation =e.getWheelRotation(); 
      if(width>sourceImageWidth || height>sourceImageHeight)
      {
       if(wheelRotation>0)
       {
        zoom+=(wheelRotation/10);
        repaint();
       }
       else if(wheelRotation<0)
       {
        zoom-=(-wheelRotation/10);
        repaint();
       }
      }
      if(width<=sourceImageWidth || height<=sourceImageHeight)
      {
       if(wheelRotation>0)
       {
        zoom+=(wheelRotation/10);
        repaint();
       }
       else if(wheelRotation<0)
       {
        zoom=1;
        repaint();
       }
      }
      repaint();
     }
    }

  5. #5
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Comme je te l'ai déjà dis, tu dois recalculer la position de ce que tu affiches. Ca se passe dans la méthode "drawImage". Il ne faut pas mettre systématiquement les coordonnées (0 ; 0).
    Tu as regardé les liens données par rebel64 ?
    On ne va pas faire le travail à ta place
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    j'ai essayee son code parceque cela m'interesse beaucoup et en changant les coordonnées du drawImage cela recentre l'image au niveau de son coin haut gauche à la position données. :s

    j'aimerais savoir s'il y a possibilité de fixer l'image pour que ce soit le zoom qui fonctionne au niveau de la souris et non que ce soit l'image total qui bouge.

    excusez moi si ma question est idiote mais je debute en java
    merci de vos reponses

    cordialement

    Frederique

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 121
    Points : 136
    Points
    136
    Par défaut
    J'ai essayer ton code avec des modifications pour qu'il fonctionne.
    Mais ton programme se contente d'afficher une image mise à l'échelle dans
    un JFrame en fonction de la roulette de souris.
    Il manque le "clipping" (découpage) de l'image agrandie et la superposition (ou juxtaposition) à l'image originale et les rafraichissements s'accumulent les un sur le autres.

    Avant de poursuivre regarde l'exemple :
    http://www.curious-creature.org/2007...oupe-in-swing/

    Je te conseil vivement de regarder à la loupe les deux classes Loupe et ApplicationFrame écrite par Romain Guy qui marchent à merveille.
    Tu verras qu'il utilise un JLayeredPane pour superposer les images et que Java permet facilement le clipping selon n'importe qu'elle forme.

Discussions similaires

  1. zoom "tracker de souris"
    Par dazz_x dans le forum 2D
    Réponses: 2
    Dernier message: 02/04/2008, 09h19
  2. Zoom turbo à la souris
    Par solipas dans le forum Contribuez
    Réponses: 0
    Dernier message: 27/07/2007, 12h18
  3. Zoom au niveau du curseur de la souris
    Par Rodrigue dans le forum Windows
    Réponses: 2
    Dernier message: 20/05/2007, 11h47
  4. [FLASH MX2004] Zoom au passage de la souris
    Par pierrot10 dans le forum Flash
    Réponses: 1
    Dernier message: 26/01/2006, 10h38
  5. Fonction de zoom à partir d'une sélection souris
    Par mick74 dans le forum OpenGL
    Réponses: 2
    Dernier message: 13/08/2004, 21h41

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