Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Farbpixel beim Mauszeiger feststellen? (https://www.delphipraxis.net/86092-farbpixel-beim-mauszeiger-feststellen.html)

submitnine 8. Feb 2007 22:58


Farbpixel beim Mauszeiger feststellen?
 
Hi, ich wollte mal fragen ob es eine Möglichkeit gibt die Aktuelle Farbe vom Punkt des Mauszeigers
auslesen zu lassen.

bitsetter 9. Feb 2007 00:46

Re: Farbpixel beim Mauszeiger feststellen?
 
Hi,
hier hast du etwas Code:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  CurPos: TPoint;
begin
  sleep(1000);//Zeit geben zum Maus bewegen
  GetCursorPos(CurPos);
  Color:= GetPixel(GetDC(0), CurPos.X, CurPos.Y);
end;

submitnine 9. Feb 2007 09:22

Re: Farbpixel beim Mauszeiger feststellen?
 
Danke dir, das hilft mir sehr weiter.. genau nach den begriff hab ich in delphi gesucht, hat nichts gefunden..

SirThornberry 9. Feb 2007 13:30

Re: Farbpixel beim Mauszeiger feststellen?
 
das Beispiel von BitSetter solltest du auf keinen Fall 1 zu 1 übernehmen da Ressourcen nicht frei gegeben werden!

submitnine 9. Feb 2007 13:36

Re: Farbpixel beim Mauszeiger feststellen?
 
ich hab natürlich mehrere codezeilen dazugemacht,
aber die grundbefehle
Mouse.CursorPos := Point(x, y);
GetPixel(GetDC(0), x, y);

hab ich so übernommen.

ich hab noch nicht so viele erfahrungen in delphi, daher weiß ich nicht wie man
die resourcen wieder freigibt..

wie wirkt sich das den aus.

SirThornberry 9. Feb 2007 15:36

Re: Farbpixel beim Mauszeiger feststellen?
 
genau die zweite Zeile ist der übeltäter. Wenn mit GetDC ein Handle geholt wird muss dieses auch wieder frei gegeben werden was aber nicht möglich ist wenn man das ganze nicht zwischenspeichert sondern direkt an die Funktion GetPixel übergibt.
Delphi-Quellcode:
var
  lDC: HDC;
begin
  lDC := GetDC(0);
  if (lDC > 0) then
  begin
    xyz := GetPixel(lDC, x, y);
    [...]
    ReleaseDC(0, lDC);
  end;

submitnine 13. Feb 2007 10:16

Re: Farbpixel beim Mauszeiger feststellen?
 
Delphi-Quellcode:
  Mouse.CursorPos := Point(300, 43);
  Colorx:= GetPixel(lDC, 300, 43);
  ReleaseDC(0, lDC);
hi, wollte fragen ob das so nun richtig ist.
ich habs vorher noch nicht gemacht, weil es auch ohne ging.. und ich ja nicht die negativen auswirkungen kenne, wenn ich es nicht tue^^

wollts aber vollständigkeitshalber trotzdem machen.

den code oben hab ich dann noch ein paar mal im ganzen drin..

SirThornberry 14. Feb 2007 09:33

Re: Farbpixel beim Mauszeiger feststellen?
 
ist ok so, man muss wie gesagt nur darauf achten das man ein Handle auf einen DC das man mit GetDC geholt hat auch wieder mit ReleaseDC frei gibt wenn es nicht mehr benötigt wird. Ansonsten gehen Windows irgendwann diese Handles aus und es gibt keine graphiche Ausgabe mehr.

submitnine 14. Feb 2007 09:36

Re: Farbpixel beim Mauszeiger feststellen?
 
ok, reicht es wenn ich am ende der schleife das einmal schreibe, oder würde er wenn ich das z.b. 20x aufrufe nur einmal wieder freigeben.

ste_ett 14. Feb 2007 09:38

Re: Farbpixel beim Mauszeiger feststellen?
 
Für jedes GetDC() musst du ein ReleaseDC() haben. :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:29 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz