Einzelnen Beitrag anzeigen

Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#890

Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]

  Alt 2. Jan 2009, 21:40
Ersetzte die MoveTo Zeilen mal Schritt für Schritt durch die folgenden Codeschnipsel und schildere was passiert:

1.
Delphi-Quellcode:
var
  pc1, pc2: PCardinal;
  x, y: integer;
begin
  for y := 0 to bmp.Height - 1 do
  begin
    pc1 := bmp.Scanline[y];
    pc2 := ABitmap.Scanline(y);
    for x := 0 to bmp.Width - 1 do
    begin
      pc1^ := $FF0000FF; //Blaues Bitmap, Alpha $FF
      inc(pc1);
      inc(pc2);
    end;
  end;
end;
2.
Delphi-Quellcode:
var
  pc1, pc2: PCardinal;
  x, y: integer;
begin
  for y := 0 to bmp.Height - 1 do
  begin
    pc1 := bmp.Scanline[y];
    pc2 := ABitmap.Scanline(y);
    for x := 0 to bmp.Width - 1 do
    begin
      pc1^ := $FFFFFFFF; //Weißes Bitmap, Alpha $FF
      inc(pc1);
      inc(pc2);
    end;
  end;
end;
3.
Delphi-Quellcode:
var
  pc1, pc2: PCardinal;
  x, y: integer;
begin
  for y := 0 to bmp.Height - 1 do
  begin
    pc1 := bmp.Scanline[y];
    pc2 := ABitmap.Scanline(y);
    for x := 0 to bmp.Width - 1 do
    begin
      pc1^ := pc2^ or $000000FF; //Inhalt ABitmap, Alpha $FF
      inc(pc1);
      inc(pc2);
    end;
  end;
end;

4.
Delphi-Quellcode:
var
  pc1, pc2: PCardinal;
  x, y: integer;
begin
  for y := 0 to bmp.Height - 1 do
  begin
    pc1 := bmp.Scanline[y];
    pc2 := ABitmap.Scanline(y);
    for x := 0 to bmp.Width - 1 do
    begin
      pc1^ := pc2^; //Inhalt ABitmap, Alpha $FF
      inc(pc1);
      inc(pc2);
    end;
  end;
end;
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat