Autor Beitrag
Nilsener
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26


D4
BeitragVerfasst: 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 user profile iconTino: Titel geändert & Topic verschoben.
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Mo 06.10.03 09:43 
Hallo!

Willst du die Farbe bestimmen (also setzen) oder möchtest du die Farbe auslesen?

Gruß
Tino
Takeshi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 64



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26


D4
BeitragVerfasst: Mo 06.10.03 17:00 
Hallo, ich möchte die Farbe auslesen.

Gruss Nils
maximus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: Mo 06.10.03 17:07 
Hallo suchst du evtl. sowas hier?

ausblenden 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!

_________________
mfg.
mâximôv
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Di 07.10.03 09:32 
Ist es notwendig das Canvas-Objekt zu benutzen? Es könnte doch auch so gehen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
Function DesktopColor (Const x, y: Integer): TColor;  
Begin
  Result := GetPixel (GetWindowDC (GetDesktopWindow), x, y);  
End;

Gruß
Tino
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Di 07.10.03 10:10 
@Tino: du musst das DC-Handle aber auch wieder freigeben!!
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26


D4
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: 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

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Di 07.10.03 21:53 
Oops.. den Teil hab ich irgendwie übersehn.. :oops: :roll:

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!