Affichage de plusieurs layer/claques??

Résolu
cs_bokc Messages postés 28 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 25 juillet 2008 - 25 juin 2007 à 10:44
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 25 juin 2007 à 13:49
Bonjour,

Pour ne pas avoir à tout redessiner à chaque fois, j'aimerai utilisé plusieurs buffer d'images : le fond, les objets "mouvant",... et les fusionner au moment de l'affichage d'où ma question :
Une fois ces buffers "remplis", et il possible de les superposer pour les afficher sur un Canva ?

BokC

9 réponses

cs_bokc Messages postés 28 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 25 juillet 2008
25 juin 2007 à 13:34
J'ai trouvé mon erreur : la declaration du BufferedImage je mettais comme type : TYPE_INT_RGB alors qu'il falait mettre :
biUnite = new BufferedImage( getWidth(), getHeight(), BufferedImage.TYPE_INT_ARGB_PRE);
3
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
25 juin 2007 à 10:54
Salut,

oui c'est possible.... le principe est simple la derniere image dessinée represent le premier plan.

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
25 juin 2007 à 11:27
En faisant bien attention toutefois que les zones transparentes de chaque couche soient bien de couleur transparentes, sinon ca va masquer ce qu'il y a dessous !
0
cs_bokc Messages postés 28 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 25 juillet 2008
25 juin 2007 à 11:39
Ah... Et comment dis tu des le debut que tout est transparent sauf se que je dessine?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
25 juin 2007 à 11:42
Il suffit de tracer un rectangle de couleur transparente :

g2d.setColor(new Color(0, 0, 0, 255)); // new Color(0, 0, 0, 0) je sais plus !
g2d.fillRectangle(0, 0, 100, 100); // à remplacer par la taille de ton image bien sûr.
0
cs_bokc Messages postés 28 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 25 juillet 2008
25 juin 2007 à 12:08
Ca marche pas completement... J'obtiens un fond noir avec un rectangle bleu (unite) mais le Map a disparu. Voila mon code :

    public void paint(Graphics g) {
        Graphics2D g2 =(Graphics2D) g;
        g2biMap.setColor(Color.PINK);
        g2biMap.fillRect(0,0, width, height);
        for (int x=0;x<nbTuileW;x++) {
            for (int y=0;y<nbTuileH;y++) {
                tuiles[x][y].draw(g2biMap);
            }
        }
        g2.drawImage(biMap,0,0,this);
       
        g2biUnite.setBackground(new Color(0f, 0f, 0f, 0f));
        g2biUnite.setColor(new Color(0f, 0f, 0f, 0f));
        g2biUnite.fillRect(0, 0, width, height);
        for(AbstractUnite unite : unites) {
            unite.draw(g2biUnite);
        }
        g2.drawImage(biUnite,0,0,this);
    }

Je pense que le pb vient de la methode utiliser pour superposer les buffer mais je ne sais pas comment faire autrement.
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
25 juin 2007 à 12:11
Essaye alors avec :
g2biUnite.setColor(new Color(0f, 0f, 0f, 1f));
0
cs_bokc Messages postés 28 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 25 juillet 2008
25 juin 2007 à 13:22
Ca change rien
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
25 juin 2007 à 13:49
Ah oui forcément, il faut que tes bufferedImage gèrent le canal alpha !
0
Rejoignez-nous