Home » Tipps & Tricks » Grafik » Grafikbearbeitung » Bitmap horizontal spiegeln

Bitmap horizontal spiegeln

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;