![]() |
Farbe unter dem Mauszeiger erkennen
Hi,
gibt es eine möglichkeit auf einem Bild die Farbe (als RGB) die unter dem Mauszeiger ist herauszufinden? Also ich habe in meinem Programm ein Bild und möchte dann die Farbe als RGB auslesen, die gerade unter dem Cursor ist. Ist das möglich und wenn ja wie? |
Re: Farbe unter dem Mauszeiger erkennen
Liste der Anhänge anzeigen (Anzahl: 1)
Moin!
Ich habe mal mein IHK Abschlussprojekt angehängt, der kann sowas mit Bitmaps - einfach mal anschauen, ich hoffe damit kommen dir die nötigen Ideen. Ansonsten zu dem TColorSelector: er nutzt noch einen alten Revisionsstand, ich habe aber die neueste Version der Komponente beigelegt - es können Fehler beim Compilieren auftreten - sollten aber IMHO nicht. MfG Muetze1 |
Re: Farbe unter dem Mauszeiger erkennen
Mag sein, dass das gleiche auch in deinem Projekt drinne steht (umso besser), denn ich weiß es nur noch teilweise.
Es gibt tatsächlich ne API, mit der du die Pixelfarbe an einem bestimmten, globalen Punkt bekommst. Mit GetCursorPos holst du dir diesen Punkt und mit GetColor(GetCursorPos) o.Ä. (weiß leider nimmer wie das Teil genau hieß) holst du dir dann die Farbe. |
Re: Farbe unter dem Mauszeiger erkennen
Gibt es denn da keinen Lösungsansatz, der in ähnlicher Art bereits im Bereich Win32-API (da gehört das Ganze IMHO eher hin) diskutiert wurde ?
|
Re: Farbe unter dem Mauszeiger erkennen
Zitat:
|
Re: Farbe unter dem Mauszeiger erkennen
Alternativ gibt's auch die einfache Eigenschaft Pixel von TCancas, die als Funtkion dazu genutzt werden kann, als Rückgabe den Farbwert des übergeben Pixels zu liefern. Das sollte das einfachst sein.
|
Re: Farbe unter dem Mauszeiger erkennen
Hier nochmal eine nette kurze Lösung mittels GetPixel:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var DC : HDC; AColor : DWord; begin DC:=CreateDC('DISPLAY',NIL,NIL,NIL); AColor := GetPixel(DC,Mouse.CursorPos.X,Mouse.CursorPos.Y); DeleteDC(DC); Label1.Caption := 'R: ' + IntToStr(AColor and $FF) + '; ' + 'G: ' + IntToStr(AColor and $FF00 div $100) + '; ' + 'B: ' + IntToStr(AColor and $FF0000 div $10000); end; |
Re: Farbe unter dem Mauszeiger erkennen
Moin!
Div? Warum nicht einfach Shr ? Ansonsten nochmal was anderes: Oben wurde nach dem Pixel in einem Bild gefragt, daher sind so gut wie alle Lösungen nur über Anpassungen nutzbar... MfG Muetze1 |
Re: Farbe unter dem Mauszeiger erkennen
Moin, Moin
Klar Shr, dürfte ja auch eine ganze Stange schneller sein. (Die Ecke war mir da im Moment aber auch gar nicht so wichtig.) ...das Bild, über welchem er aber immer mit dem Cursor drüber ist! Die Ergebnismenge ist also eher größer als notwendig gewesen ...und sollte event. jetzt nur auf das Bild reduziert werden? Z.B. so:
Delphi-Quellcode:
with Mouse, Image1 do
if (CursorPos.X < ClientOrigin.X) or (CursorPos.X >= ClientOrigin.X + Width) or (CursorPos.Y < ClientOrigin.Y) or (CursorPos.Y >= ClientOrigin.Y + Height) then Label1.Caption := '' else begin . . . end; |
Re: Farbe unter dem Mauszeiger erkennen
So, das geht ja schon wunderbar, aber:
Kann ich das ganzeauch in Hex ausgeben lassen statt RGB? Wenn ja: Wie? Edit: Habs schon selber hinbekommen, trotzdem danke :D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz