Recuperer une couleur
Mr.joplin
Messages postés
26
Statut
Membre
-
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
-
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 ?-
-
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)); } } -
-