Recuperer une couleur

Mr.joplin Messages postés 24 Date d'inscription   Statut Membre Dernière intervention   -  
Mr.joplin Messages postés 24 Date d'inscription   Statut Membre Dernière intervention   -
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.
A voir également:

1 réponse

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   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
Mr.joplin Messages postés 24 Date d'inscription   Statut Membre Dernière intervention  
 
D'une JPanel
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   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
Mr.joplin Messages postés 24 Date d'inscription   Statut Membre Dernière intervention  
 
Merci bien je vais essayer cette astuce même si elle est un peu compliqué pour un debutant comme moi.
0