Transparence d'une image

Résolu
Bonjour,

Je suis en train de programmer un mini jeu.
J'ai une image de fond avec de l'herbe avec un personnage dessus.
Ce que j'aimerais faire c'est griser la case, ou juste l'assombrir.
Est-ce que quelqu'un sait faire ?

Cordialement,
Sara.

1 réponse

  1. Modérateur
    "griser la case, ou juste l'assombrir"
    Au début tu parlais de transparence d'images qui se superposait donc j'arrivais à suivre, mais là tu parles de "case" et je ne vois pas de quoi tu parles... Un exemple de code serait le bienvenu !
    1. Mon jeu est représenté sous forme d'une grille.
      Chaque personnage est dans une case.
      Et je voudrais griser cette case lorsque le personnage a joué.

      Je parlais de transparence parce que je voulais justement dessiner un rectangle rouge ou gris par dessus cette case, mais que le rectangle ne soit pas totalement rempli, juste assez pour qu'on puisse voir le personnage par dessous.

      Est-ce que tu comprends ce que je veux dire ?
    2. Modérateur
      Si tu as compris le principe de superposition des images, il te suffit de superposer encore une autre image mais cette-fois ci avec ton rectangle partiellement transparent...
    3. Justement je sais comment dessiner deux rectangles l'un au-dessus de l'autre, mais je sais pas comment le rendre partiellement transparent.
    4. Modérateur
      Tu peux aussi dessiner des images l'une au dessus de l'autre, donc avec un éditeur d'image tu fais des images transparentes, et tu les superposes les unes au dessus des autres...

      public class Test
      {
          public static void main(String[] args)
          {
              JPanel panel = new JPanel()
              {
                  private static final long serialVersionUID = 1;
                  
                  private final Image img1 = new ImageIcon("C:/vert.png").getImage();
                  private final Image img2 = new ImageIcon("C:/gus.png").getImage();
                  private final Image img3 = new ImageIcon("C:/rouge.png").getImage();
                                  
                  public void paint(Graphics g) 
                  {
                      super.paint(g);
                      g.drawImage(img1, 0, 0, null, null);
                      g.drawImage(img2, 0, 0, null, null);
                      g.drawImage(img3, 0, 0, null, null);
                  }
              };
              
              JFrame frame = new JFrame();
              frame.add(panel);
              frame.setSize(150,150);        
              frame.setVisible(true);
              frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          }
      }

      Si tu veux tester comme moi, j'ai mis les 3 images en lignes : images.zip