# Pixelfarbe ermitteln



## MarcLB (18. Jan 2005)

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 (19. Jan 2005)

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 (19. Jan 2005)

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 (19. Jan 2005)

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 (19. Jan 2005)

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 (31. Jan 2005)

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.


----------

