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

2D Java Discussion :

Récupérer coordonnées pixels


Sujet :

2D Java

  1. #1
    Invité
    Invité(e)
    Par défaut Récupérer coordonnées pixels
    Bonjour,

    J'ai un petit problème qu je n'arrive pas à régler. Mon programme est capable d'ouvrir une image, et je dois créer un outil qui permette de dessiner dessus. Cependant, si mon outil de dessin marche très bien avec un zoom de 100%, quand je change de zoom il y a un décallage entre la position de ma souris et le trait tracé. Tout ca à cause de mon MouseListener qui n'est pas sur mon image mais sur le scrollpane qui contient l'image. Oui car mon programme possède un composant JScrollPane dans lequel est dessiné mon image.

    Donc en gros je cherche à ce que mon MouseListener "se ballade" uniquement sur mon image et pas sur le scrollpane, mais je sais pas si c'est possible.

  2. #2
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Il va falloir transférer les coordonnées par rapport à la position du viewport dans le JScrollPane.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Qu'est ce que le viewport exactement ? Les scrollbar ?

  4. #4
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Un peu de javadoc ne fait jamais de mal... c'est quand même fait pour ça :

    http://javasearch.developpez.com/j2s...crollPane.html

  5. #5
    Invité
    Invité(e)
    Par défaut
    Alors j'ai lu la javadoc, même si quelques fois mon anglais est défaillant. Cependant je n'arrive toujours pas à comprendre comment gérer mon problème. Un petit peu d'aide ne serait pas de refus.

  6. #6
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Met ton MouseListener sur le Viewport. Je pense que ça devrait être pas mal.
    Le Viewport d'une JScrollPane contient la partie visible de ton panel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jscrollPane.getViewport().addMouseListener(...);

  7. #7
    Invité
    Invité(e)
    Par défaut
    Merci de tes réponses, c'est effectivement pas bien compliqué.
    Mais en fait mon problème est un petit plus compliqué :

    En fait j'ai un JPanel "DrawingPanel" qui contient un JScrollPane. Le viewport du ScrollPane, c'est un JComponent "ImageView" où est dessiné mon image. Donc je fais dans DrawingPanel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ScrollPane.setViewportView(imageView);
    imageView étant bien sur une instance de ma classe ImageView.

    Donc le but c'est d'avoir un mouselistener sur le viewport afin de se balader sur l'image et de récupérer des infos (coordonnées, niveaux de gris etc...).

    Ca j'ai bien compris, avant on avait un mouselistener sur le scrollpane en entier, ce qui fait que lors d'un zoom, les coordonnées étaient faussée.

    Donc j'imagine que la solution c'est de mettre un mouselistener dans ma classe ImageView, ce que j'ai fait :

    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
    public class ImageView extends JComponent implements MouseListener{
       .........
       public ImageView(Image image, ArrayList info) {
          ......
       }
       .........
     
       // implementation du mouse listener
        public void mouseMoved(MouseEvent e) {
            pt=getMousePosition();
        }
        public void mouseClicked(MouseEvent e) {
     
        }   
        public void mousePressed(MouseEvent e) {
     
        }
        public void mouseReleased(MouseEvent e) {
     
        }    
        public void mouseEntered(MouseEvent e) {
     
        }    
        public void mouseExited(MouseEvent e) {
     
        }
        public Point getRealPosition(){
            return pt;
        }     
    }
    Dans mon Panel "DrawingPanel", je ne sais pas trop comment faire. Pour le moment j'ai aussi un MouseListener, et quand on bouge la souris, ca utilise la méthode getRealPosition() de l'imageView.

  8. #8
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    C'est sûrement plus simple d'utiliser MouseEvent#getX() et MouseEvent#getY() par exemple... le getRealPosition je ne le sens pas.

    Le listener sur le DrawingPanel c'est bien, c'est ça qu'il faut faire.

  9. #9
    Invité
    Invité(e)
    Par défaut
    D'accord, merci. Mais c'est le DrawingPanel qui contient des composants pour afficher les valeurs des coordonnées, donc je dois utiliser une méthode de ImageView qui retourne la coordonnée quelque part.

    Donc dans DrawingPanel j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private void ScrollPaneMouseMoved(java.awt.event.MouseEvent evt) {                                      
            Point pt = imageView.getRealPosition();
            int RealX=pt.getX();
            int RealY=pt.getY();
            txtX.setText(String.valueOf(RealX));
            txtY.setText(String.valueOf(RealY));
            ...........
    Mais bon ca marche pas...

Discussions similaires

  1. [FAQ][SDL] Comment récupérer les pixels d'une surface ?
    Par Fiquet dans le forum Contribuez
    Réponses: 2
    Dernier message: 19/09/2010, 11h24
  2. Récupérer Coordonnées d'une Cellule avec un Vlookup
    Par mouimouic dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/01/2008, 19h34
  3. Réponses: 3
    Dernier message: 15/07/2006, 05h18
  4. Réponses: 7
    Dernier message: 01/04/2006, 18h05
  5. Réponses: 9
    Dernier message: 19/12/2005, 14h24

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