Wenn du nur 1 (oder maximal 2

) Pixel auslesen möchtest, dann kannst du ruhig über Pixel gehen. Möchtest du aber dass gesammte Bild durchsuchen empfehle ich auf jeden Fall die Eigenschaft Scanline. Mit der bekommst du direkt einen Pointer auf den Speicher der Zeile zurück und das ist die schnellste Art darauf zuzugreifen. Beachte dabei bitte auch, die Eigenschaft PixelFormat. Die gibt an welches Format du zurückbekommst. Ist ja nicht unbedingt unwichtig.
PS: Solltest du sehr häufig zwischen den Zeilen springen, dann solltest du dir die Resultate von Scanline in einem dynamischen Array anlegen und darauf zugreifen. Scanlines verursacht nämlich auch ein bisschen overhead.
Und noch etwas am Rande. Vermeide es für jedes Pixel die genaue Position zu berechen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| var Row : pDWord; idx : Integer; begin row := Bitmap.Scanline[0];
for Idx := 0 to Bitmap.Width -1 do begin if row^ = clRed then Inc (Row); end; end; |
Ich glaube das sollte als kleine Anschauung genügen.

Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.