Autor Beitrag
supersass1
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 55



BeitragVerfasst: Mo 19.11.07 23:02 
Hallo,

Gibt es eine Funktion, die mir die Farbe eines Pixels gibt?

Ich meine dabei den Pixel, der im Vordergrund ist, also welchen ich sehe.
Welche Möglichkeiten habe ich da?

mfg supersass1


Moderiert von user profile iconNarses: Topic aus Windows API verschoben am Di 20.11.2007 um 09:48
ub60
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 765
Erhaltene Danke: 130



BeitragVerfasst: Mo 19.11.07 23:11 
Meinst Du so was?
ausblenden Delphi-Quelltext
1:
Farbe:=Image1.Canvas.Pixels[x,y];					

ub60
supersass1 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 55



BeitragVerfasst: Di 20.11.07 07:30 
ja in der Art, nur habe ich kein Image.

Ich brauch quasi ein Image vom bildschirm, den ich sehe, und dadrin such ich nach Pixeln.
Ist es so dann möglich? Wie kann ich ein Bild machen, vom Bildschrim?

mfg supersass1
mexx
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1183



BeitragVerfasst: Di 20.11.07 07:52 
Ich habe hier einen Link für Dich. Dort findest Du zahlreiche Tipps für das Arbeiten mit Grafiken inkl. Bildschirmfoto erstellen.

www.dsdt.info/tipps/?kat=37

_________________
Das Unsympathische an den Computern ist, dass sie nur ja oder nein sagen können, aber nicht vielleicht.
supersass1 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 55



BeitragVerfasst: Di 20.11.07 08:45 
danke, vielen Dank.
Folgender Link hat mir weitergeholfen:
www.dsdt.info/tipps/?id=337


mfg supersass1


btw netter modestil ;)
Lossy eX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1048
Erhaltene Danke: 4



BeitragVerfasst: Di 20.11.07 10:17 
Auch auf die Gefahr, dass das wie Klugscheißerei aussieht. ;)

Du solltest mit GetPixel oder Canvas.Pixels (nichts anderes als GetPixel) sehr sparsam umgehen. 1-20 Pixel sind kein Thema. Aber bei allem was darüber hinaus geht, und ein bisschen auf die Zeit achten muss, solltest du alternativen (mehr programmieraufwand) benutzen. Denn ansonsten wird es einfach nur unerträglich langsam.

PS: Keine Ahnung was der Codeschreiber sich gedacht hat aber das TCanvas ist mal vollkommen unnütz, denn in diesem Fall dient es lediglich als Variable was ich persönlich für ziemlich schwachsinnig halte.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
function DesktopColor(const X, Y: integer): TColor;
var
  DC: HDC;
begin
  DC := GetWindowDC(GetDesktopWindow);
  Result := GetPixel(DC, X, Y);
  ReleaseDC(GetDesktopWindow, DC)
end;

_________________
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
supersass1 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 55



BeitragVerfasst: Di 20.11.07 15:25 
Ja, vielen Dank, klingt logisch was du sagst.
Wegen langsam, ist ja auch verständlich, aber ich möchte ja nichts zeichnen, sondern nur abfragen ;) also keine Fläche, sondern Pixel, von daher reicht das völlig.

Vielen lieben Dank :)
termodox
Hält's aus hier
Beiträge: 15



BeitragVerfasst: So 27.01.08 14:26 
Hallo,
ich versuche auch eine Pixelfarbe herausfinden doch es gelingt mir nicht.

folgenden Code habe ich benutzt.
doch die PanelFarbe ändert sich einfach nicht egal wo meine Maus sich befindet...

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
function DesktopColor(const X, Y: integer): TColor;
var
  DC: HDC;
begin
  DC := GetWindowDC(GetDesktopWindow);
  Result := GetPixel(DC, X, Y);
  ReleaseDC(GetDesktopWindow, DC)
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
Pos: TPoint;
 begin
  GetCursorPos(Pos);
  Panel1.Color := DesktopColor(Pos.X, Pos.Y);
end;

end.


Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt


Zuletzt bearbeitet von termodox am Mo 04.02.08 19:30, insgesamt 1-mal bearbeitet
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: So 27.01.08 14:41 
hi bitte nimm in zukunft die Delphi-Tags.

also

[delphi]

{<--//Hier dein Code//-->}

[/delphi]

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.


Zuletzt bearbeitet von elundril am Di 05.02.08 14:27, insgesamt 1-mal bearbeitet
termodox
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mo 04.02.08 19:31 
gemacht =]