![]() |
Alle Pixel durchscannen
Hi @ all,
also ich habe ein Problem mit dem durchscannen von allen Pixeln die auf dem Desktop sind. Was ich vorhabe ist alle Pixel durchzuscannen und da wo er der farbwert '400D0D' auftritt soll eine Label-Caption gesetzt werden.
Delphi-Quellcode:
hier ist der gesamte code.
z.b. label9.Caption := 'Pixel gefunden bei ' + inttostr(i) + '/' + inttostr(x);
Delphi-Quellcode:
wenn ich das eine zeitlang durchlaufen lasse konnt ein ganz toller fehler der sehr aussagekräftig ist.
for i:=0 to screen.Width do begin
for x:=0 to screen.Height do begin application.ProcessMessages; lampe := TColorToHex(DesktopColor(i, x)); if lampe = '400D0D' then begin label9.Caption := 'Pixel gefunden bei ' + inttostr(i) +'/'+ inttostr(x); end; end; end; "Leinwand/Bild erlaubt kein" <- mehr kommt als fehler nicht. Hat jemand eine idee wie ich das lösen kann ?? oder hat jemand eine andere Methode dafür ?? thx schonmal. [edit=Daniel B]Delphi-Tags korrigiert. Mfg, Daniel B[/edit] |
Re: Alle Pixel durchscannen
... Zeichnen"
Der kommt dann, wenn zwei Threads gleichzeitig auf einen Canvas zugreifen wollen oder so. |
Re: Alle Pixel durchscannen
Vermutlich sieht die komplette Meldung so aus:
"Leinwand/Bild erlaubt kein Zeichnen" Das heisst wahrscheinlich, das der Canvas auf den du bearbeiten willst durch einen anderen Thread blockiert ist. Scannst du den Canvas in einem expliziten Thread?? [EDIT]Da war ich wohl zu langsam[/EDIT] |
Re: Alle Pixel durchscannen
Ändere doch mal folgendes:
Delphi-Quellcode:
Manchmal ist weniger mehr ...
for i:=0 to screen.Width-1 do begin
for x:=0 to screen.Height-1 do begin Gruss OLLI Ps.: Eventuell kannst Du Deine Routine erheblich beschleunigen, wenn Du mit BitBlt zunächst den Desktop in ne Bitmap kopierst und dann per Scanline an die Geschichte rangehst! GetPixel bzw. Canvas.Pixel[x,y] ist nämlich laaaangsaaaam. |
Re: Alle Pixel durchscannen
Das mit dem Screenshot voher würde ich auch anraten, dadurch sollten Probleme mit dem gleichzeitigen Zugriff erfolgreich vermieden werden!
Gruß Wormid P.S.: Außerdem ist ein Zugriff per Pixels[x, y] in der Tat deutlich langsamer... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz