Autor |
Beitrag |
Nilsener
      
Beiträge: 26
D4
|
Verfasst: So 05.10.03 17:40
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
      

Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: Mo 06.10.03 09:43
Hallo!
Willst du die Farbe bestimmen (also setzen) oder möchtest du die Farbe auslesen?
Gruß
Tino
|
|
Takeshi
      
Beiträge: 64
|
Verfasst: 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 
      
Beiträge: 26
D4
|
Verfasst: Mo 06.10.03 17:00
Hallo, ich möchte die Farbe auslesen.
Gruss Nils
|
|
maximus
      
Beiträge: 896
Win XP, Suse 8.1
Delphi 4/7/8 alles prof
|
Verfasst: 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
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!
_________________ mfg.
mâximôv
|
|
Tino
      

Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: 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
      
Beiträge: 2931
XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
|
Verfasst: 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; |
_________________ gringo pussy cats - eef i see you i will pull your tail out by eets roots!
|
|
maximus
      
Beiträge: 896
Win XP, Suse 8.1
Delphi 4/7/8 alles prof
|
Verfasst: Di 07.10.03 10:12
Nein ist natürlich nicht notwendig tino! Habs aber auch schon in meinem post-scriptum angemerkt.
_________________ mfg.
mâximôv
|
|
Nilsener 
      
Beiträge: 26
D4
|
Verfasst: 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
      
Beiträge: 2266
Erhaltene Danke: 4
Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
|
Verfasst: Di 07.10.03 16:14
es gibt im EDH (auf 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.
_________________ Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
|
|
Motzi
      
Beiträge: 2931
XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
|
Verfasst: 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! 
_________________ gringo pussy cats - eef i see you i will pull your tail out by eets roots!
|
|
Keldorn
      
Beiträge: 2266
Erhaltene Danke: 4
Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
|
Verfasst: 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  Frank
_________________ Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
|
|
Motzi
      
Beiträge: 2931
XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
|
Verfasst: Di 07.10.03 21:53
Oops.. den Teil hab ich irgendwie übersehn.. 
_________________ gringo pussy cats - eef i see you i will pull your tail out by eets roots!
|
|