Entwickler-Ecke
Windows API - Farbe eines Pixels ausserhalb von Form auslesen ?
Nilsener - So 05.10.03 17:40
Titel: Farbe eines Pixels ausserhalb von Form auslesen ?
Hallo, ist es möglich die Farbe eines Pixels irgendwo auf dem Bildschirm zu bestimmen, auch wenn es ausserhalb von Form liegt ? Also eine Function, der man die x,y Koordinate übergibt und die dann die Farbe zurückliefert ?
Gruss Nils
Moderiert von
Tino: Titel geändert & Topic verschoben.
Tino - Mo 06.10.03 09:43
Hallo!
Willst du die Farbe bestimmen (also setzen) oder möchtest du die Farbe auslesen?
Gruß
Tino
Takeshi - Mo 06.10.03 15:44
das finde ich auch interessant, hab mir mal gewünscht sowas zu machen, kann aber leider nicht helfen. wenn ich mir aber erlauben darf, folgende frage zustellen:
also war nur so ein gedankengang, dass man irgendwo hinklickt und dann den farbwert dieses punktes bekommt - wie kann man denn einen klick außerhalb der form feststellen?
gruß, Takeshi
Nilsener - Mo 06.10.03 17:00
Hallo, ich möchte die Farbe auslesen.
Gruss Nils
maximus - Mo 06.10.03 17:07
Hallo suchst du evtl. sowas hier?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| function DesktopColor(const x,y:integer):TColor; var c: TCanvas; begin c:=TCanvas.create; c.handle:=GetWindowDC(GetDesktopWindow); result:=getpixel(c.handle,x,y); c.free; end; |
kleiner tipp noch, wenn du diese operation sehr oft durchfühst, dann würd ich die function zerpflüken und mir das 'c.handle', sprich das ganze canvas, dauerhaft vormerken :wink:
hoffe konnte helfen?
PS: du brauchst eigentlich nur das handle, nur wenn du noch andere sachen mit dem desktop machen willst, dann is das canvas ganz praktisch!
Tino - Di 07.10.03 09:32
Ist es notwendig das Canvas-Objekt zu benutzen? Es könnte doch auch so gehen:
Delphi-Quelltext
1: 2: 3: 4:
| Function DesktopColor (Const x, y: Integer): TColor; Begin Result := GetPixel (GetWindowDC (GetDesktopWindow), x, y); End; |
Gruß
Tino
Motzi - Di 07.10.03 10:10
@Tino: du musst das DC-Handle aber auch wieder freigeben!!
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| function DesktopColor (Const x, y: Integer): TColor; var DC: HDC; begin HDC := GetWindowDC(GetDesktopWindow); Result := GetPixel (DC, x, y); ReleaseDC(GetDesktopWindow, DC); end; |
maximus - Di 07.10.03 10:12
Nein ist natürlich nicht notwendig tino! Habs aber auch schon in meinem post-scriptum angemerkt.
Nilsener - Di 07.10.03 16:07
Vielen Dank für Eure Hilfen, läuft schon ganz gut jetzt, nur noch ein bischen langsam. Ich stelle einen Ausschnitt des Desktops in einem Image Fenster dar und wiederhole permanent mit möglichst hoher Geschwindigkeit.
maximus hat foldendes angemerkt :
"kleiner tipp noch, wenn du diese operation sehr oft durchfühst, dann würd ich die function zerpflüken und mir das 'c.handle', sprich das ganze canvas, dauerhaft vormerken."
Erhöht das die Geschwindigkeit, und wie mache ich das was maximus meint genau ? Im Moment übersteigt es noch meinen Anfängerverstand.
Gruss Nils
Keldorn - Di 07.10.03 16:14
es gibt im EDH (auf
http://www.delphi-treff.de) einen eintrag wie man eine screenshot vom dektop schießen kann. Dort bekommst du eine Bitmap, wenn ich mich richtig erinnere. sollte schneller sein, als jedes pixel einzeln auszulesen.
Gugg dort mal nach.
Motzi - Di 07.10.03 16:30
Wenn es um den ganzen Desktop geht schon, aber wenn ich nur einen einzelnen Pixel brauch ist es wohl ein bisschen übertrieben gleich den ganzen Desktop in ein Bitmap zu schmeißen! ;)
Keldorn - Di 07.10.03 16:47
| Motzi hat folgendes geschrieben: |
| Wenn es um den ganzen Desktop geht schon, aber wenn ich nur einen einzelnen Pixel brauch ist es wohl ein bisschen übertrieben gleich den ganzen Desktop in ein Bitmap zu schmeißen! ;) |
ich beziehe mich hierdrauf:
| Zitat: |
stelle einen Ausschnitt des Desktops in einem Image Fenster dar
|
und bin davon ausgegenagen, das der ausschnitt nicht bloß ein pixel groß sein wird :wink: Frank
Motzi - Di 07.10.03 21:53
Oops.. den Teil hab ich irgendwie übersehn.. :oops: :roll:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!