Thema: Delphi Scanline verwenden

Einzelnen Beitrag anzeigen

Muetze1
(Gast)

n/a Beiträge
 
#6

Re: Scanline verwenden

  Alt 11. Dez 2006, 13:40
1. Du übergibst RGB() immernoch die falsche Reihenfolge! Dies hatte ich oben schon angemerkt. Erst rot, grün und dann blau.
2. PRGBTriple ist ein Zeiger auf einen Zeiger und kein Array Typ. Du kannst den Pointer mit Inc() einfach inkrementieren um auf den nächsten Pixel zu zu greifen. Es ist kein Array - aber das hat dir der Compiler schon gesagt.
3. Wenn du die Zeiger inkrementierst, dann solltest du dies immer machen und nicht nur wenn die If Bedingung hinhaut, sonst würdest du ständig auf der Stelle trampeln.

Delphi-Quellcode:
  for y := 0 to Layer2.Height-1 do
  begin
    P := Layer2.Scanline[y];
    P2 := img.Picture.Bitmap.ScanLine[y];
    for x := 0 to Layer2.Width-1 do
    Begin
      if RGB(P^.rgbRed, P^.rgbGreen, P^.rgbBlue) <> ColorToRGB(clFuchsia) then
        P2^ := P^;
      
      Inc(P2);
      Inc(P);
    End;
  end;
  Mit Zitat antworten Zitat