Recuperer une couleur
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
-
ModérateurBonjour,
"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 ?-
-
ModérateurLe 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)); } } -
-