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;