DruckenMister WongFacebook

Bitmap horizontal spiegeln

System Win9x, WinNT, Win2000, WinXP, Vista, Win7
Ab Delphi-Version Delphi 1
Letzte Änderung 28.09.2010

Eine der Grundaufgaben eines jeden Grafikprogrammes ist es, Bilder zu spiegeln. Der folgende Tipp zeigt wie man es in Delphi horizontal realisieren kann.

Zuerst müssen diese beiden Typen vereinbart werden:

type
  TRGBArray = array[0..0] of TRGBTriple;
  pRGBArray = ^TRGBArray;

Dann der Code:

procedure HorizontalSpiegeln(const Bitmap: TBitmap);
var i,j,w: Integer;
    rowin,rowout: pRGBArray;
begin
  w := bitmap.width*sizeof(TRGBTriple);
  Getmem(rowIn,w);
  try
    for j:= 0 to Bitmap.Height-1 do
    begin
      move(Bitmap.Scanline[j]^,rowin^,w);
      rowout := Bitmap.Scanline[j];
      for i := 0 to Bitmap.Width-1 do
        rowout[i] := rowin[Bitmap.Width-1-i];
    end;
    bitmap.Assign(bitmap);
  finally
    Freemem(rowin);
  end;
end;

Ein Aufruf sähe zum Beispiel aus:

procedure TForm1.Button1Click(Sender: TObject);
begin
  HorizontalSpiegeln(Image1.Picture.Bitmap);
end;