Recuperer une couleur

Fermé
Mr.joplin Messages postés 24 Date d'inscription mardi 16 juillet 2013 Statut Membre Dernière intervention 16 juin 2016 - 6 avril 2015 à 17:01
Mr.joplin Messages postés 24 Date d'inscription mardi 16 juillet 2013 Statut Membre Dernière intervention 16 juin 2016 - 7 avril 2015 à 00:34
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

KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
6 avril 2015 à 17:37
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 mardi 16 juillet 2013 Statut Membre Dernière intervention 16 juin 2016
6 avril 2015 à 17:41
D'une JPanel
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
6 avril 2015 à 19:35
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 mardi 16 juillet 2013 Statut Membre Dernière intervention 16 juin 2016
7 avril 2015 à 00:34
Merci bien je vais essayer cette astuce même si elle est un peu compliqué pour un debutant comme moi.
0