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 :

Peindre un fond


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2005
    Messages : 135
    Par défaut Peindre un fond
    Bonjour,

    Si j'ai bien compris, pour superposer 2 images sur un JLabel il suffit de faire un paintComponent avec l'image que l'on veut mettre en dessous et faire un setIcon avec l'image que l'on veut mettre dessus.

    La question que je me pose est :

    Comment créer une fonction que prend 2 images en entrée et qui ferait se superposer 2 images?

    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
     
    Class LabelSuperposition extends JLabel{
            private Icon imageDessus;
            private Icon imageDessous;
     
    public LabelSuperposition(Icon imageDessus, Icon imageDessous){
            this.setSize(50,50);
            this.imageDessus = imageDessus;
            this.imageDessous = imageDessous;
            this.setVisible(true);
    }
     
     
    public void superposer(Icon imageDessus, Icon imageDessous){
            this.setIcon(imageDessus);
            this.????????????(imageDessous);
    }
    Je sais que lors de l'instance de l'objet la methode paintComponent dessinerait le fond mais lorsque j'utilise la methode superposer est ce que la fonction paintComponent se lance? sinon comment faire sans avoir à rafraichir toute ma fenetre?

    Merci de votre aide.


    [EDIT] je sais quil y a la methode upadete(Graphics g) mais c'est le graphics qui me gene je vois pas comment le manipuler.

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    1) Puisque tu tiens a manipuler des icones ton premier choix est d'en creer une nouvelle contenant l'image resultant de la supperposition des deux icones sources.

    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
     
    public void superposer(Icon imageDessus, Icon imageDessous){
      int iconWidth = Math.max(imageDessus.getIconWidth(), imageDessous.getIconWidth());
      int iconHeight = Math.max(imageDessus.getIconHeight(), imageDessous.getIconHeight());
      BufferedImage image = new BufferedImage(iconWidth, iconHeight, BufferedImage.TYPE_INT_ARGB);
      Graphics2D graphics = image.createGraphics();
      try {
        // On peut egalement faire des decalages divers pour les peindre centrees, alignees a droite, etc...
        imageDessous.paintIcon(this, graphics, 0, 0);
        imageDessus.paintIcon(this, graphics, 0, 0);
      }
      finally {
        graphics.dispose();
      }
      Icon icon = new ImageIcon(image);
      setIcon(icon);
      repaint();
    }
    2) Tu peux aussi te creer ta propre classe etendant l'interface Icon et qui redefinit paintIcon() de maniere a supperposer 2 autres icones "a la volee" a chaque fois que cette methode est appelee.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

Discussions similaires

  1. [Graphics View] [QGraphicsView] Impossible de peindre mon fond avec QLinearGradient
    Par kaymak dans le forum Débuter
    Réponses: 3
    Dernier message: 22/08/2010, 15h14
  2. TDBGRID - Couleur de fond d'une seule cellule
    Par cgo dans le forum Bases de données
    Réponses: 5
    Dernier message: 11/09/2009, 10h16
  3. [VB6] [Graphisme] Image de fond stretchable dans mdiform
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 17/02/2003, 10h45
  4. Changer la couleur de fond de l'écran
    Par tnk dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 19/01/2003, 01h37
  5. dans le fond, la compilation...
    Par deltapositive dans le forum C++Builder
    Réponses: 5
    Dernier message: 17/09/2002, 12h14

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