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 :

Enlever / Rajouter une image


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 26
    Par défaut Enlever / Rajouter une image
    Bonjour, j'affiche une image à l'aide de
    g.drawImage dans un paint(Graphic g), j'aimerais que lorsque j'appel de nouveau cette méthode je supprime l'image de mon panel et que j'affiche une nouvelle image.

    Affiche une nouvelle image j'ai juste à refaire le drawImage jusque là pas de problème, mais pour enlever l'image présente avant je n'y'arrive pas... J'ai essayé clearRect pour "effacer" mais comme mon image de fond est un décor ça me fait simplement un rectangle gris... j'ai essayé g.dispose() mais ça ne donne rien. J'aimerais donc savoir si quelqu'un pouvait il m'éclairer sur la façon dont je pourrais m'y prendre ! merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void paint(Graphic g){
     
    x++
    g.drawImage(img,x,100,null);
     
    }

  2. #2
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    Je ne comprends pas vraiment ce qui doit rester ou être effacer (image, image de fond, fond, ...), quoi qu'il en soit la méthode paintComponent(Graphics) est plus adaptée au dessin dans un composant, par exemple le code suivant affiche une image sur un fond "propre" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
     
        g.drawImage(...);
    }

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 26
    Par défaut
    Désolé pour le manque de compréhension ! Je vais préciser.

    J'utilise donc un panel avec un fond, avec le g.drawImage, j'y ajoute un personnage aux coordonnées x,100. Je veux le faire se déplacer... Donc j'affiche ce même personnage aux coordonnées x+1,100.. etc... mais il me faut effacer le personnage précedent, ce que je n'arrive pas à faire

    ps : je prends note pour la méthode ! merci

  4. #4
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    Dans le principe, ça peut ressembler à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public void moveCharacter() {
        imgX++;
        repaint(0, imgX-1, imgY, imgWidth+2, imgHeight);
    }
     
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawImage(...);// fond
        g.drawImage(img, imgX, imgY, this);// personnage
    }

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 26
    Par défaut
    le problème c'est que pour "créer" ma carte je me retrouve à devoir ajouter plusieurs images, donc de cette façon je vais devoir refaire à chaque fois un grand nombre de g.drawImage.

    Existerait il un moyen plus optimisé pour ce que je veux ? sinon je pense que je ferais ainsi, merci !

  6. #6
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 3
    Par défaut
    Bonjour,
    pourquoi ne dessinerais tu pas le fond sur une BufferedImage opaque et ton personnage sur une BufferedImage transparente que tu translaterais au fur et a mesure ?

  7. #7
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    Si le problème est d'avoir un fond composé de plusieurs images qui n'évoluent pas dans le temps et d'éviter de tout redessiner à chaque affichage. Il est possible de dessiner une fois toutes les images dans un BufferedImage lors de la construction du JPanel. Puis d'utiliser le BufferedImage dans paintComponent(Graphics).

Discussions similaires

  1. enlever la bordure d'une image sur laquelle il y a un lien
    Par grinder59 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 06/09/2006, 07h31
  2. rajouter du texte sur une image
    Par dietrich dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 31/03/2006, 16h20
  3. Enlever le cadre autour d'une image lien.
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 24/09/2005, 16h55
  4. [iText] Rajouter une image dans un pdf
    Par COCOLOLO dans le forum Documents
    Réponses: 2
    Dernier message: 06/04/2005, 17h01
  5. Enlever le boutton impression sur une image !
    Par Gab-Gab dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/11/2004, 23h30

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