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

 Java Discussion :

Dessiner un cercle sur une image


Sujet :

Java

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 78
    Points : 59
    Points
    59
    Par défaut Dessiner un cercle sur une image
    Bonjour à tous,

    J'ai besoin de positionner une cible sur une carte de France en fonction de la ville sélectionnée, voila comment je fais :

    Dans le View
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Position.PlacerCible(Index, jLabel3.getGraphics());
    Dans la classe Position
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        public static void PlacerCible(int Index, Graphics g)
        {
            Point coorList = new Point();
            coorList=Recherche_coordonnees(Index);
            coorList.setLocation(coorList.x/5.4+122, coorList.y/(-4.25)+60);
            Graphics2D g2 =(Graphics2D) g;
            g2.clearRect(0,0,250,225);
            g2.setColor(Color.red);
            g2.drawOval(coorList.x, coorList.y, 20, 20) ;
     
        }
    Le problème est que quand je veux effacer la cible pour en afficher une autre, il m'efface aussi l'image du jLabel.

    Comment je devrais faire pour éviter ça?

    Bonne journée,

    Pierre

  2. #2
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut
    Bonjour,

    pourquoi ne positionneriez-vous pas un composant par-dessus votre JLabel ? Ce composant contenant l'image d'une cible, serait géré via sa propriété Visible.
    Ainsi vous-seriez quitte de gérer la gestion du dessin.

    C'est une idée parmi d'autres...

    @ bientôt...
    @ bientôt...

    Salut & @+ sur 3W!

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 78
    Points : 59
    Points
    59
    Par défaut
    Bonjour,

    Merci pour votre réponse, je vais essayer comme ça, mais je ne pensais pas que je pourrais facilement superposer deux objets. Je vais essayer.
    Je pensais utiliser un jLayeredPane mais je n'ai pas encore trouver comment faire.

    Bonne journée

    P.

  4. #4
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut
    Bonjour,

    faites attention dans quel ordre vous installez les composants. Par exemple, dans mon application, j'affiche un tableau qui a été déssiné au préalable dans une image type png ( Ca m'évite toute une mise en forme laborieuse ):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    lbl_ZonePointage = new JLabel( new ImageIcon( getClass().getResource( "/POINTAGE_Pointage.png" )));
    lbl_ZonePointage.setBounds( 16, 8, 551, 477 );
    Sur ce tableau, je déplace un composant permettant la saisie de valeurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    txt_SaisiePointage = new JTextField();
    Tout ceci cohabite sur un JPanel de travail:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pnl_Travail = new JPanel( null ); // Pas de Layout
    L'installation des composants se fait de la sorte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pnl_Travail.add( txt_SaisiePointage );
    pnl_Travail.add( lbl_ZonePointage );
    J'ai remarqué que l'ordre d'installation correspond à l'ordre de superposition. Dans le cas que vous décrit sommairement, il n'y a pas besoin de JLayeredPane.

    @ bientôt...
    @ bientôt...

    Salut & @+ sur 3W!

  5. #5
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Pour dessiner sur un composant il ne faut jamais au grand jamais utiliser les Graphics fournis par la méthode getGraphics qui sont des graphics qui disparaîtront au prochain repaint.

    La seule façon correcte de dessiner sur un JCOmponent (donc un JLabel par héritage) est de redéfinir la méthode paintComponent et d'utiliser les Graphics fournis par celle ci. Le appels à ces Graphics doivent être uniquement utilisés dans le scope de la méthode paintComponent (ou d'une méthode appelée dans paintComponent) et non en dehors.
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

Discussions similaires

  1. Dessiner des lignes sur une image
    Par g_barthe dans le forum wxPython
    Réponses: 2
    Dernier message: 10/10/2008, 11h29
  2. dessiner des cercles sur une image avec java
    Par inès83 dans le forum Traitement d'images
    Réponses: 12
    Dernier message: 04/05/2008, 17h34
  3. Dessiner un rectangle sur une image
    Par pika84 dans le forum 2D
    Réponses: 5
    Dernier message: 11/06/2007, 21h45
  4. Dessiner un cercle sur une sphère ?
    Par nico_ippo dans le forum MATLAB
    Réponses: 2
    Dernier message: 15/01/2007, 17h25
  5. [Image]Dessiner des rectangles sur une image
    Par navona dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 09/03/2006, 22h51

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