Drehen von Bitmaps |
|
| Autor | Finn-Ole Paulsen |
|---|---|
| System | Win9x, WinNT, Win2000, WinXP, Vista, Win7 |
| Ab Delphi-Version | Delphi 1 |
| Letzte Änderung | 28.04.2011 |
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:
Der Code der Prozedur sieht dann so aus:
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:
begin
BitmapDrehen_90Grad(Image1.Picture.Bitmap);
end;