Recuperer une couleur

Mr.joplin Messages postés 26 Statut Membre -  
Mr.joplin Messages postés 26 Statut Membre -
Bonjour, dans mon mini-projet d'etude on nous a proposé de concevoir un jeu 2D en Java (en utilisons les fonctions graphiques), je voudrais savoir si c'est possible de récupérer la couleur d'une partie grace au coordonnées x et y.

1 réponse

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Bonjour,

    "récupérer la couleur d'une partie grace au coordonnées x et y"
    Ça dépend c'est "une partie" de quoi ? Sur quel objet s'applique les coordonnées ?
    0
    1. Mr.joplin Messages postés 26 Statut Membre
       
      D'une JPanel
      0
    2. KX Messages postés 19031 Statut Modérateur 3 020
       
      Le JPanel n'est pas vraiment fait pour ça, c'est normalement juste un Container, pas vraiment un élément d'affichage en soit. Mais on peut tricher en combinant un getLocationOnScreen qui va dire où est le JPanel sur l'écran et un createScreenCapture pour faire une impression écran de cette zone.

      Exemple :

      import java.awt.AWTException;
      import java.awt.Color;
      import java.awt.Graphics;
      import java.awt.Point;
      import java.awt.Rectangle;
      import java.awt.Robot;
      import java.awt.image.BufferedImage;
      
      import javax.swing.JFrame;
      import javax.swing.JPanel;
      
      public class Test {
      
      public static void main(String[] args) throws AWTException, InterruptedException {
          
          // Paramètres de la couleur à chercher
          
          Color color1 = Color.RED;
          int x=12, y=34;
          
          // Création de la fenêtre
          
          JPanel panel = new JPanel() {
      	@Override
      	public void paint(Graphics g) {
      	    g.setColor(color1);
      	    g.drawLine(x, y, x, y);
      	}
          };
          
          JFrame frame = new JFrame();
          frame.add(panel);
          frame.setSize(100, 100);
          frame.setLocationRelativeTo(null);
          frame.setVisible(true);
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          
          Thread.sleep(1000); // attends que la fenêtre soit affichée
          
          // Recherche de la couleur
          
          Robot robot = new Robot();
          Point location = panel.getLocationOnScreen();
          Rectangle rectangle = new Rectangle(location.x, location.y, panel.getWidth(), panel.getHeight());
          BufferedImage img = robot.createScreenCapture(rectangle);
          Color color2 = new Color(img.getRGB(x, y));
          
          // Vérification
      
          System.out.println(color1);
          System.out.println(color2);
          System.out.println(color1.equals(color2));
      }
      }
      0
    3. Mr.joplin Messages postés 26 Statut Membre
       
      Merci bien je vais essayer cette astuce même si elle est un peu compliqué pour un debutant comme moi.
      0