GetColor und GetPixelColor frage !

Status
Nicht offen für weitere Antworten.

Screen

Bekanntes Mitglied
Hallo

ich habe eine Frage zu der getColor(); methode.

Ich will meinen Mauszeiger auf eine Stelle auf meinem Bildschirm bewegen und dann die Pixelfarbe dieser Stelle ausgeben, wenn ich getPixelcolor benutze bekomme ich nur z.b. r=255 b=255 ,damit kann ich aber wenig anfangen, die Ausgabe sollte z.b. sein "Die Farbe des Pixel ist : blau" .
und wenn ich getRed(); und co benutze bekomme ich auch nur r=255...

Wie stelle ich das am besten an ?

[die Forumsuche wurde schon benutzt]

help pls
 
Es soll mir einfach anzeigen ,auf welcher Farbe ich bin...

ein Beispiel; auf dem Monitor werden drei Kreise gemalt , einer ist blau einer ist grün und der andere schwarz.

Uun geht jemand mit seiner Maus auf einen Kreis und dann erhält er die Farbe als Rückgabewert, um zu erfahren welche Farbe das ist bzw. wie sie heißt..

Ich habe eine ähnliche Funktion auf einer Internetseite mit Javascript geshen, da konnte man auf einer Schablone eine Farbe auswählen, die dann als Farbcode für Internetseiten ausgegeben wurde...

Ich möchte das aber ganz eifnach gestalten...ist es nun möglich ?
 
Naja wenn du nen Kreis als Grundlage verwendest musst du dir ja nicht zwingend die Pixelfarbe zurückgeben lassen. Du kannst ja dem Kreis eine MouseOver Methode implementieren und die gibt dann die Farbe des Kreises zurück, oder hab ich was falsch verstanden?
 
Naja wenn du nen Kreis als Grundlage verwendest musst du dir ja nicht zwingend die Pixelfarbe zurückgeben lassen. Du kannst ja dem Kreis eine MouseOver Methode implementieren und die gibt dann die Farbe des Kreises zurück, oder hab ich was falsch verstanden?

nicht wircklich..ich will das allgemein auf den ganzen Desktop ausweiten lassen d.h. egal wohin ich auf dem Desktop meinen ist Mauszeige ,er soll mir die Farbe des Punktes liefern....so einfach ist das...
 
Ja wie schon gesagt wurde ist "blau" bspw. nur der RGB-Wert 0,0,255 Sobald Du bspw. RGB 0,0,254 hast klappt das nicht mehr... geschweige denn bei einem gelben Punkt oder ähnlichem. Entweder Du machst Dir eine Liste oder was auch immer die für jede Farbkonstelation einen String liefert oder Du gibst weiterhin den RGB-Wert aus 😉

Wobei der Vorschlag von Verjigorm auch helfen könnte... Weiß nich ob der JFileChooser nich irgendwo die Werte zuweisen kann....
 
.. Weiß nich ob der JFileChooser nich irgendwo die Werte zuweisen kann....
Du meinst JColorChooser, oder? Ich hab grad mal in der API geguckt, schaut nicht so aus als gäbs da irgendwelche vorgefertigten Methoden für.

@TO
1.) Du kannst ne HashMap <Color,String> machen, und dadrin alle möglichen Farben speichern. Wenn der Benutzer zuffällig einer der Farben die in der HashMap vorkommen auswählt, kannst du den dazugehörigen String ausgeben lassen, ansonsten musst du halt die 3 Zahlenwerte für R G und B ausgeben.

2.) Natürlich könntest du stattdessen auch überprüfen welcher der 3 Zahlen am höchsten ist.
Wenn die RGB werte z.b. so aussehen:
80 124 250
gibt du
"Blau"
aus, da 250 größer als die anderen beiden Zahlen ist. Ist deine Entscheidung ob du diese Lösung für sinnvoll hälst, ich find sie nicht gut.

€dit wegen deinem ersten Post:
kann es sein das du IMMER jeweils 255 für alle 3 Werte zurückbekommst? Wenn ja, haben wir dein Problem missverstanden.
 
Zuletzt bearbeitet:
Hallo,

ich habe ein ganz ähnliches Problem, deshalb frage ich mal in diesem Thread: Ich möchte einfach nur eine Rückmeldung, ob sich die Maus gerade über einem gezeichneten Objekt befindet, die oben erwähnte Funktion getPixelColor() würde mir reichen. Ich finde die aber nirgends, müsste die nicht zur MouseEvent-Klasse gehören?

Gruß
bronkowitz
 
ob sich die Maus gerade über einem gezeichneten Objekt befindet
Damit meinst du ein Element aus DEINER Gui, oder? Nicht von irgendwelchen externen Programmen.
Wenn ja:
adde einen MouseListener an das entsprechende Component. Im MouseListener wird dann entsprechend mouseEntered bzw. mouseExited aufgerufen.
 
ja genau, meiner GUI.
Ich habe das mal ausprobiert, aber er meldet immer nur den Eintritt der Maus in die Zeichenfläche (Panel), ich brauche aber die Information b sich die Maus über einem der Zeichenobjekte befindet (Line oder Arc) also z.B. über "Pixel ungleich Hintergrundfarbe" oder so was
 
Musst Du dann noch unterscheiden über welchem Objekt sich die Maus befindet? Dann wäre es vielleicht besser zum zeichnen Objekte zu verwenden die das Interface Shape implementieren und diese in einer Liste zu speichern. Mit contains(...) kann man dann überprüfen, ob eines der Elemente auf der Koordinate liegt.

P.S getPixelColor() ist eine Methode von Robot
 
nein, ich muss nicht unterscheiden.

Aber das Problem mit den contain-Methoden ist, dass sie auf das enthalten-sein im Shape (also quasi der Hüllfläche) prüfen. Ich muss aber wissen, ob die Maus die Linie, oder Arc selber trifft (bzw. den Pixel)
(Eigentlich brauche ich eine Methode um den nächsten Pixel zur Maus zu finden, aber das kann ich mir dann schon selber stricken)

In der API wird gesagt, das die Robot-Methoden nicht plattform unabhängig sind und es ggf. Probleme zB bei X-Window Systemen geben kann. Ds Programm soll aber auf verschieenen Windows-Systemen und unter citrix laufen

Gruß
bronkowitz
 
Stimmt, wenn's um Linien geht hilft das contains von Shape nicht weiter.
Einzige Möglichkeit die mir so spontan einfällt, wenn Du es tatsächlich über die Pixelfarbe lösen willst:
Ein Bild vom Panel machen und dann aus dem Bild die Farbe auslesen. Code sollte dazu es hier irgendwo im Forum umherschwirren.
 
Wie wärs, wenn man jeweils die RGB Werte überprüft?
z.B.:
- wenn R >= G * 1.5 & B * 1.5 -> Red
- wenn R ~ G ~ B >= 200 -> Black
- wenn R ~ G ~ B <= 55 -> White
- wenn R ~ G ~ B <= 55 -> Grey
etc 🙂
 
ja, ich denke so werde ich es mal versuchen. Komisch bloss, dass das so kompliziert sein muss.

Trotzdem Danke für die Tips!
Gruß
brnkowiz
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben