Einzelnen Beitrag anzeigen

mattsbg

Registriert seit: 31. Jan 2008
3 Beiträge
 
#1

Rotate mit Graphics32 - Rundungsungenauigkeit?

  Alt 31. Jan 2008, 16:11
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
  Mit Zitat antworten Zitat