Hallo,
ich verwende die Klasse TAffineTransformation der Graphics32 um in meinem Programm Bilder zu rotieren. Mir ist aufgefallen, dass das Bild nach einer Transformation um 180° statt bei Left 0 bei 1 und statt bei Top 0 bei 1 anfängt.
Da das Destination Image aber exakt gleich groß ist wie das Source Image, verliere ich dann Pixel...
Liegt das an einer möglichen Rundungsdifferenz beim Drehen oder doch an meinem Code?
Delphi-Quellcode:
T := TAffineTransformation.Create;
T.SrcRect := FloatRect(0, 0, SrcR + 1, SrcB + 1);
T.Rotate(SrcR / 2, SrcB / 2, -RadToDeg(Angle));
bmpDest := TBitmap32.Create;
bmpDest.Width := bmpSrc.Width;
bmpDest.Height := bmpSrc.Height;
DrawGraphic(AImage, bmpSrc, Rect(0, 0, SrcR, SrcB));
Transform(bmpDest, bmpSrc, T);
Anm.: im Normalfall handelt es sich schon um eine freie Drehung, da ich ansonsten natürlich die RotateXX Methoden hernehmen könnte. Aber das hat mich irgendwie stutzig gemacht.
danke für eure Meinung.
Matthias