# Pixelfarbe der aktuellen Mausposition



## anaishasi (4. Juni 2004)

Hallo!

Ich habe folgendes Problem:
In einem Applet habe ich verschiedenfarbige Rechtecke mit "g.fillRect(x,y)" erzeugt. Nun möchte ich, wenn man auf eines der Rechtecke klickt, dass die Farbe der aktuellen Mausposition (also die Farbe des Rechtecks) ausgelesen wird. Gibt es für diesen "Auslesevorgang" irgendeinen Befehl oder einen Lösungsweg? Hab irgendwas mit "getRGB" bzw. "getRed" ... gelesen, aber das hat nicht so richtig funktioniert, da ich ja die Farbe an der aktuellen Mausposition auslesen möchte.

Danke für eure Lösungsvorschläge,
Stefan.


----------



## Thomas Darimont (4. Juni 2004)

Hallo!

Ganz easy .... ;-)


```
import java.awt.AWTException;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.Robot;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JApplet;

/**
 * @author      Darimont<br>
 * @version     1.0<br>
 * Date of creation:  04.06.2004<br>
 * File:         PixelTest.java<br>
 * Modifier:     Darimont<br>
 * Revision:     Revision<br>
 * State:        Germany<br>
 */

public class PixelTest extends JApplet{
	
	private Robot robot;
	
	public void init(){
		super.init();
		setSize(320,240);
		try {
			robot = new Robot();
		} catch (AWTException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}		
		getContentPane().addMouseListener(new MouseAdapter(){
			public void mousePressed(MouseEvent evt){
				Point p = evt.getPoint();
				Color c = getColorAtPoint(p.x,p.y);
				System.out.println(c);
			}

			private Color getColorAtPoint(int x, int y) {
				if(robot != null){
					return robot.getPixelColor(x,y);
				}
				return null;
			}
		});
	}
	
	public void paint(Graphics g){
		super.paint(g);
		g.setColor(Color.RED);
		g.fillRect(20,20,80,80);
		g.setColor(Color.BLUE);
		g.fillRect(20,120,80,80);
	}
	
	public void start(){
		super.start();
	}
}
```

Gruß Tom


----------



## Snape (4. Juni 2004)

> _Original geschrieben von anaishasi _
> *Hallo!
> 
> Ich habe folgendes Problem:
> ...



Es gibt keine Farbe der aktuellen Mausposition, sondern eine Farbe der Komponente an der angegebenen Mausposition.
Und an die solltest Du im Graphics Kontext mit

abstract  Color 	getColor()
          Gets this graphics context's current color.

herankommen.


----------



## Thomas Darimont (4. Juni 2004)

Hallo!

*räusper*
http://java.sun.com/j2se/1.4.2/docs/api/java/awt/Robot.html#getPixelColor(int, int)

Gruß Tom


----------



## Snape (4. Juni 2004)

> _Original geschrieben von Thomas Darimont _
> *Hallo!
> *
> 
> ...



Cool, Robot? Wasn das für ein Teil?

public class Robot
extends Object

This class is used to generate native system input events for the purposes of test automation, self-running demos, and other applications where control of the mouse and keyboard is needed. The primary purpose of Robot is to facilitate automated testing of Java platform implementations. 

Das erklärt mir auch nicht gerade, warum bzw. wie Dein Code funktioniert...


----------



## Thomas Darimont (4. Juni 2004)

Hallo mal wieder,

der Zweck von Robot ergibt sich ja wohl wirklich nun aus dem JavaDoc's`, oder?
Mit der Klasse Robot kann man auch Screenshots machen ... und getPixelColor baut sehr wahrscheinlich darauf auf.

Gruß Tom


----------



## Snape (4. Juni 2004)

Oha, 1.4.2, dann werde ich mal in der aktuellen 1.4.2 API schauen. In meiner 1.3.1 ist das nicht so transparent, deshalb meine Frage.
So fortschrittlich sind wir hier nicht. ;-)
Oder besser: :-(


----------

