AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Alle Pixel durchscannen

Alle Pixel durchscannen

Ein Thema von Supremacy · begonnen am 15. Okt 2003 · letzter Beitrag vom 15. Okt 2003
Antwort Antwort
Supremacy

Registriert seit: 15. Okt 2003
20 Beiträge
 
#1

Alle Pixel durchscannen

  Alt 15. Okt 2003, 12:28
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.
z.b. label9.Caption := 'Pixel gefunden bei ' + inttostr(i) + '/' + inttostr(x); hier ist der gesamte code.
Delphi-Quellcode:
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 = '400D0Dthen begin
    label9.Caption := 'Pixel gefunden bei ' + inttostr(i) +'/'+ inttostr(x);
  end;
end;

end;
wenn ich das eine zeitlang durchlaufen lasse konnt ein ganz toller fehler der sehr aussagekräftig ist.
"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]
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Alle Pixel durchscannen

  Alt 15. Okt 2003, 12:40
... Zeichnen"
Der kommt dann, wenn zwei Threads gleichzeitig auf einen Canvas zugreifen wollen oder so.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#3

Re: Alle Pixel durchscannen

  Alt 15. Okt 2003, 12:42
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]
Daniel
Testen ist feige!
  Mit Zitat antworten Zitat
OLLI_T

Registriert seit: 13. Okt 2003
Ort: Nähe Wetzlar / Hessen
143 Beiträge
 
Delphi 5 Enterprise
 
#4

Re: Alle Pixel durchscannen

  Alt 15. Okt 2003, 12:52
Ändere doch mal folgendes:

Delphi-Quellcode:
for i:=0 to screen.Width-1 do begin

for x:=0 to screen.Height-1 do begin
Manchmal ist weniger mehr ...

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.
No Pain No Gain!
  Mit Zitat antworten Zitat
Benutzerbild von Wormid
Wormid

Registriert seit: 26. Aug 2003
Ort: Steinfurt
292 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Alle Pixel durchscannen

  Alt 15. Okt 2003, 12:56
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...
Debuggers don't remove Bugs, they only show them in Slow-Motion.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:22 Uhr.
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