Hallo,
wie funktioniert ScanLine?
Folgender Delphi Code hab ich in einem
dsdt.info Tutorial gefunden
Delphi-Quellcode:
procedure TForm1.MakeRed(Bit: TBitmap);
type
PixArray = array [1..3] of Byte;
var
p: ^PixArray;
h,w: Integer;
begin
for h:=0 to Bit.Height-1 do
begin
p:= Bit.ScanLine[h];
for w:=0 to Bit.Width-1 do
begin
p^[3]:=255;
Inc(p);
end;
end;
end;
Dieser Code funktioniert zwar, aber verstanden hab ich ihn nicht.
1.) Worauf zeigt p? (auf die Array klar, aber woher kommen die Farbwerte, auf die ich zugreifen kann?)
2.) Wieso kann man mit Inc(p) durch die Pixel navigieren? (erhöht man hiermit die Speicheradresse? Wenn ja, wieso um den Wert 1?)
Außerdem noch eine anwendungsbezogene Frage:
Wie kann ich mitten in ein Bild z.B. ein rotes Rechteck mit Hilfe von ScanLine zeichnen? -> Also wie kann man mit ScanLine zu bestimmten Pixeln springen?
Mit freundlichen Grüßen
Maximus