Connaitre la couleur présente à un point précis.
ReddInTheAbyss
Messages postés
41
Statut
Membre
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour,
Je cherche depuis ce matin un moyen de connaitre la couleur présente à une position dans ma fenêtre...
Par exemple pour les coordonnées x = 10 et y = 20, pouvoir récupérer le RGB de la couleur à cet endroit.
Merci d'avance !
Je cherche depuis ce matin un moyen de connaitre la couleur présente à une position dans ma fenêtre...
Par exemple pour les coordonnées x = 10 et y = 20, pouvoir récupérer le RGB de la couleur à cet endroit.
Merci d'avance !
A voir également:
- Connaitre la couleur présente à un point précis.
- La boite a couleur - Télécharger - Divers Photo & Graphisme
- Point de suite word - Guide
- Comment inserer une video dans un power point - Guide
- Excel cellule couleur si condition texte - Guide
- Point de restauration - Guide
1 réponse
Tu peux faire une "impression écran" sur une zone définie par un rectangle, et en particulier sur un seul pixel (rectangle 1x1) puis en extraire les couleurs.
Pour cela il te faut un Robot (qui fait les impressions écrans) :
Ensuite, on effectue l'impression écran pour récupérer la couleur.
Ici x et y correspondent au pixel sur l'écran, pas sur une JFrame.
En exemple, je vais reprendre en partie le code que je t'ai donné hier sur la récupération des coordonnées de la souris (--> ici). Mais pour le getColor il faut bien penser à prendre getXOnScreen et getYOnScreen au lieu de getX et getY.
Par exemple en changeant juste mouseMoved :
Pour cela il te faut un Robot (qui fait les impressions écrans) :
private static final Robot robot = initRobot();
private static Robot initRobot()
{
try
{
return new Robot();
}
catch (AWTException e)
{
throw new RuntimeException(e);
}
}
Ensuite, on effectue l'impression écran pour récupérer la couleur.
Ici x et y correspondent au pixel sur l'écran, pas sur une JFrame.
public static Color getColorOnScreen(int x, int y)
{
Rectangle rect = new Rectangle(x,y,1,1);
BufferedImage img = robot.createScreenCapture(rect);
int rgb = img.getRGB(0, 0);
return new Color(rgb);
}
En exemple, je vais reprendre en partie le code que je t'ai donné hier sur la récupération des coordonnées de la souris (--> ici). Mais pour le getColor il faut bien penser à prendre getXOnScreen et getYOnScreen au lieu de getX et getY.
Par exemple en changeant juste mouseMoved :
@Override
public void mouseMoved(MouseEvent e)
{
Color color = getColorOnScreen(e.getXOnScreen(),e.getYOnScreen());
System.out.printf("move : x=%3d, y=%3d, rgb=(%d,%d,%d)\n", e.getX(), e.getY(), color.getRed(), color.getGreen(), color.getBlue());
}La confiance n'exclut pas le contrôle