[Nicht] Anliegend ein Testprojekt, es funktioniert weder unter Delphi XE7 (was ich derzeit noch für das Programm verwende), noch unter dem aktuellsten 10.4.1...
Wegen der Dateigröße von 14 MB (das 24-bit-Bild) musste ich das Demo kurz auf meine eigene Seite laden, lasse es solange drauf, bis Du entweder sagst, Du willst es Dir nicht ansehen oder dass Du es geladen hast:
https://www.hastasoft.de/GDITest.zip
Da ich hier immer mit quadratischen Bildern arbeite, ist mir das bislang nicht aufgefallen: Man muss bei nicht quadratischen Vorlagen natürlich auch die Dimensionen der Ziel-Bitmap entsprechend anpassen.
Delphi-Quellcode:
function GDIPRotateFlipBitmap(ABitmap: tBitmap; Mode: RotateFlipType): Boolean;
var
BM: tBitmap;
GR: tGPGraphics;
AGPBitmap: tGPBitmap;
AStatus: Status;
W: Integer;
begin
if Mode = RotateNoneFlipNone then begin
Result := True;
Exit;
end;
BM := tBitmap.Create;
BM.Assign(ABitmap);
AGPBitmap := tGPBitmap.Create(BM.Handle, 0);
AGPBitmap.RotateFlip(Mode);
> if ABitmap.Width <> ABitmap.Height then begin
> W := ABitmap.Width;
> ABitmap.Width := ABitmap.Height;
> ABitmap.Height := W;
> end;
GR := tGPGraphics.Create(ABitmap.Canvas.Handle);
GR.DrawImage(AGPBitmap, 0, 0);
AStatus := GR.GetLastStatus;
Result := (AStatus = OK);
AGPBitmap.Free;
BM.Free;
GR.Free;
end;
Viel Spaß beim weiteren Basteln.