Pixelfarbe ermitteln

Status
Nicht offen für weitere Antworten.
M

MarcLB

Gast
Hallo,

ich habe ein MouseListener zu meinem Canvas3D hinzugefügt und möchte jetzt die
Farbe des Pixels auf die die Maus zeigt bekommen.

Etwa so:
public void mousePressed(java.awt.event.MouseEvent event)
{
int x = event.getX() ;
int y = event.getY() ;
System.out.println( x + " " y ) ;
try {
Color c = new Robot().getPixelColor(x,y);
System.out.println(c.toString() ) ;
} catch ( Exception e ) {}
}


Allerdings stimmen die Farben nicht! Die Koordinaten stimmen.

Wer kann helfen ?
 

Oxygenic

Bekanntes Mitglied
Das ist wohl eine Frage für Hellseher. Was macht deine Klasse Robot?

Theoretisch würde es so ablaufen: Du "pickst" dir das Objekt, das sich unter deinem Mauszeiger befindet, hangelst dich durch die diversen Picking-Strukturen um das Polygon zu finden, dass du mit der Maus angepeilt hast und ermittelst dessen Farbe (was bei einer Textur non-trivial wird).
 

Sky

Top Contributor
Oxygenic hat gesagt.:
Das ist wohl eine Frage für Hellseher. Was macht deine Klasse Robot?

Ich denke mal, dass es sich hierbei nicht um eine selbst entwickelte Klasse handelt, es sei denn "MarcLB" entwickelt auch für SUN :lol: . In der API findet Du's hier.
 

Oxygenic

Bekanntes Mitglied
Dann ist das auch das Problem: Robot popelt am GraphicsDevice rum, ich nehme nicht an, dass damit wirklich die echte Pixelfarbe des Objekts zu ermitteln ist.
 

Illuvatar

Top Contributor
Ich denke eher, das Problem liegt darin, dass das Mausevent relativ zu der Komponente ist, Robot allerdings relativ zum ganzen Bildschirm. Du kannst du dem Punkt, den das MouseEvent zurückgibt, Component#getLocationOnScreen addieren, dann müsste es tun.
 

Stefan1200

Top Contributor
Zum Debugen: Setzte doch mit der Robot Klasse den Mauszeiger dorthin, wo du die Pixelfarbe mit getPixelColor abfragst.
Machste also vor getPixelColor einfach mal mouseMove mit den selben Koordinaten.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben