Home » Tipps & Tricks » Grafik » Grafikbearbeitung » Drehen von Bitmaps

Drehen von Bitmaps

Der folgende Tipp soll zeigen, wie man ein TBitmap um 90° drehen kann.
Hierzu wird die gedrehte Zeichnung erst auf ein unsichtbares Hilfsbitmap gezeichnet, welches dann mittels Assign-Methode in das Original-Bitmap kopiert wird.

Wir wandeln die Bitmap in eine 32-Bit-Bitmap um, um uns unnötige Rechenarbeit zu sparen.

Zunächst ist jedoch diese Typenvereinbarung fällig:

type TMyhelp = array[0..0] of TRGBQuad;

Der Code der Prozedur sieht dann so aus:

procedure BitmapDrehen_90Grad(const Bitmap: TBitmap);
var P: PRGBQuad; //^THelpRGB;
    x,y,b,h : Integer;
    RowOut: ^TMyHelp;
    help: TBitmap;
begin
  Bitmap.PixelFormat := pf32bit;
  help := TBitmap.Create;
  try
    help.PixelFormat := pf32bit;
    b := bitmap.Height;
    h := bitmap.Width;
    help.Width := b;
    help.height := h;
    for y := 0 to (h-1) do
    begin
      rowOut := help.ScanLine[y];
      P  := Bitmap.scanline[bitmap.height-1];
      inc(p,y);
      for x := 0 to (b-1) do
      begin
        rowout[x] := p^;
        inc(p,h);
      end;
    end;
  finally
    bitmap.Assign(help);
    help.Free;
  end;
end;

Ein Beispielaufruf könnte so aussehen:

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