Thema: Delphi Funktionsweise: ScanLine

Einzelnen Beitrag anzeigen

Maximus

Registriert seit: 26. Okt 2003
169 Beiträge
 
#1

Funktionsweise: ScanLine

  Alt 30. Jun 2009, 10:03
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
  Mit Zitat antworten Zitat