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

Interfaces Graphiques en Java Discussion :

image superposé quoi faire?


Sujet :

Interfaces Graphiques en Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2010
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 109
    Points : 36
    Points
    36
    Par défaut image superposé quoi faire?
    bonjour à toutes et à tous


    j'ai un problem auquelle je m'arrache les cheveux depuis quelque jours

    effet , j'ai une classe "Dessin " dans laquelle je redéfinit le methode paintCompanent


    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
    public void paintComponent(Graphics contexteGraphique) {
     
    		 try {
    		 Image img = ImageIO.read(new File("images/toulouse.jpg"));
    		 contexteGraphique.drawImage(img, 0, 0, this);
    		 //Pour une image de fond
    		 g.drawImage(img, 0, 0, this.getWidth(),		 this.getHeight(), this);
    		 } catch (IOException e) {
    		 // TODO Auto-generated catch block
    		 e.printStackTrace();
    		 }
     
     
          //Dessine la balle
         contexteGraphique.setColor(Color.red);
         contexteGraphique.fillOval(x,y, 10, 10);   }


    ensuite j'instancie cette classe dans la classe Play ou il y a un boutton qui fait ceci





    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    class BoutonListener implements ActionListener{
    		 /**
                     * Redéfinition de la méthode actionPerformed
     
                        changer la position de OVAL
                     */
    		 public void actionPerformed(ActionEvent arg0) {
    			 //pan.removeAll();
                             pan.setX(pan.getX()+50);
                             pan.repaint();
    		 }
    		 }

    le problem c'est que quand je clique sur ce boutton j'ai deux image superposés




    comment puisse_je deplacer le cerle sans deplacer l'image !!



    merci à toutes et à tous qui veulent m'aider

  2. #2
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Points : 2 323
    Points
    2 323
    Par défaut
    Bonsoir,

    Garde donc tes cheveux .

    Alors une petite question dans l'actionListener c'est quoi pan?

    Si c'est ce que je pense, c'est à dire Dessin dans ce cas tu ne peux pas avec la façon dont tu fais car tu déplaces la zone de dessin et non l'objet fillOval.

    Pour un truc évolutif ce que je te conseil.

    1/ Faire une classe cercle qui contient le rayon couleur et tous les descriptif
    2/ Faire un tableau de cercle
    3/ Ainsi dans le panel dessin

    C'est un extrait du code d'un paint que j'ai fais, Forme est une interface avec je fais aussi des rectangles trait ou cercle mais le principe est le même
    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
     
    public void paint(Graphics g) 
    {
    	//On cast l'objet Graphics en Graphics2D 
    	Graphics2D g2 = (Graphics2D)g;
     
    	//pour changer le fond du panel il faut utiliser paint component
    	super.paintComponent(g2);
    	//Dessin du fond du dessin
    	setBackground(modele.getCouleurFond());
     
    	//image de fond 
    g2.drawImage(modele.getImageDeFond(),0,0,this.getWidth(),this.getHeight(), null, this);
     
    		for (Iterator<Forme> it = modele.getFormesIterateur(); it.hasNext();)
    		{
    			Forme f = it.next();
    			f.dessinerContour(g2, modele.getCouleurTrait());
    			f.dessinerPlein(g2,modele.getCouleurRemplissage());
    		}
    	}
    4) Pour arriver à ton problème le setlocation ne doit pas être fait sur le panel dessin mais sur l'objet cercle, le x et le y de fillOval(x,y,10,10) puis faire un repaint du panel, panel.repaint.

    avec l'idée des étapes 1 2 3 tu set la position de la classe cercle et tu repaint la boucle fera le reste. Mais si tu veux juste tester et donc avoir un oval il faut que mettre en getter et setter les positions x et y de l'oval puis un repaint.

    voila mon avis ^_^°.
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  3. #3
    Nouveau membre du Club
    Inscrit en
    Octobre 2010
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 109
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par XxArchangexX Voir le message
    Bonsoir,

    Garde donc tes cheveux .

    Alors une petite question dans l'actionListener c'est quoi pan?

    Si c'est ce que je pense, c'est à dire Dessin dans ce cas tu ne peux pas avec la façon dont tu fais car tu déplaces la zone de dessin et non l'objet fillOval.

    Pour un truc évolutif ce que je te conseil.

    1/ Faire une classe cercle qui contient le rayon couleur et tous les descriptif
    2/ Faire un tableau de cercle
    3/ Ainsi dans le panel dessin

    C'est un extrait du code d'un paint que j'ai fais, Forme est une interface avec je fais aussi des rectangles trait ou cercle mais le principe est le même
    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
     
    public void paint(Graphics g) 
    {
    	//On cast l'objet Graphics en Graphics2D 
    	Graphics2D g2 = (Graphics2D)g;
     
    	//pour changer le fond du panel il faut utiliser paint component
    	super.paintComponent(g2);
    	//Dessin du fond du dessin
    	setBackground(modele.getCouleurFond());
     
    	//image de fond 
    g2.drawImage(modele.getImageDeFond(),0,0,this.getWidth(),this.getHeight(), null, this);
     
    		for (Iterator<Forme> it = modele.getFormesIterateur(); it.hasNext();)
    		{
    			Forme f = it.next();
    			f.dessinerContour(g2, modele.getCouleurTrait());
    			f.dessinerPlein(g2,modele.getCouleurRemplissage());
    		}
    	}
    4) Pour arriver à ton problème le setlocation ne doit pas être fait sur le panel dessin mais sur l'objet cercle, le x et le y de fillOval(x,y,10,10) puis faire un repaint du panel, panel.repaint.

    avec l'idée des étapes 1 2 3 tu set la position de la classe cercle et tu repaint la boucle fera le reste. Mais si tu veux juste tester et donc avoir un oval il faut que mettre en getter et setter les positions x et y de l'oval puis un repaint.

    voila mon avis ^_^°.

    je crois que vous m'avez bien compris et d’ailleurs vous avez bien cibler le probleme car effectivement j'ai un deplacement de toute la zone du dessin , peut etre meme l'oval reste figé et c'est la zone qui bouge mais j'ai pas compris votre solution,plutot j'ai pas su l'appliquer, je suis perdu
    pouvez_vous etre plus explicite;désolé

  4. #4
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Points : 2 323
    Points
    2 323
    Par défaut
    Bonjour,

    On va imager un peu, prend ton panel dessin comme une table, dessus tu poses une nappe(ton img de fond) et des objets, assiete (fillOval), ce que tu fais actuellement c'est pousser la table alors que ce que tu souhaites c'est déplacer l'assiete.

    c'est un setX sur le fillOval qu'il faut faire. Pour finir le détail c'est que l'ordi n'a pas de jolie yeux ^_^, donc pour lui dire l'objet à bouger il faut faire un repaint sur le panel.

    Est ce que sa t'aide à mieux voir ?

    A partir de la ma solution consiste à frabriquer le fillOval avant puis de le stocker dans un tableau, ensuite seulement je le dessine sur le panel de dessin.
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

Discussions similaires

  1. [Débutant] Image svg convertie en Xaml : Quoi faire après?
    Par Masmeta dans le forum Windows Presentation Foundation
    Réponses: 16
    Dernier message: 30/04/2013, 14h43
  2. Problème de boot , ne sait plus quoi faire ...
    Par timZeR0 dans le forum Administration système
    Réponses: 3
    Dernier message: 02/12/2005, 18h01
  3. Réponses: 7
    Dernier message: 15/11/2005, 21h57
  4. [image] Méthodes pour faire un seuillage Bin. de qualité
    Par Rafoo dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 27/10/2005, 14h08
  5. [debutant]quoi fair pour recompiler un fichier .java
    Par nouaman dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 27/05/2004, 09h10

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