Einzelnen Beitrag anzeigen

schlagzu

Registriert seit: 11. Okt 2010
86 Beiträge
 
Delphi XE Starter
 
#1

Bild drehen mit Graphics32 und / oder GDI+

  Alt 10. Aug 2011, 22:13
Hallo,

ich habe mal wider ne Stelle, an der ich nicht weiterkomme. Wahrscheinlich finde ich in den nächsten 15 min die Lösung, aber trotzdem suche ich eure Hilfe. Ich benutzte zur zeit diese (auch die einzige funktionierende die ich gefunden habe) Procedure die ich im Forum hier gefunen habe:

Delphi-Quellcode:
procedure Rotate(const Src: TBitmap32; const Dst: tBitmap32; Angle: Single; x,y: integer);
var
  SrcR: Integer;
  SrcB: Integer;
  T: TAffineTransformation;
  Sx, Sy, Scale: Single;
begin
  SrcR := Src.Width - 1;
  SrcB := Src.Height - 1;
  T := TAffineTransformation.Create;
  T.SrcRect := FloatRect(0, 0, SrcR +1, SrcB + 1);
  try
    // shift the origin
    T.Clear;

    // move the origin to a center for scaling and rotation
    T.Translate(-SrcR / 2 , -SrcB / 2 );
    T.Rotate(0, 0, Angle);

    // move the origin back
    T.Translate(SrcR / 2, SrcB / 2 );

    // zu x und y bewegen
    T.Translate(x,y);

    // transform the bitmap
    Transform(Dst, Src, T);
  finally
    T.Free;
  end;
end;
Jedoch entstehen dabei unschöne ränder bei 90° 180° 270° entstehen. Siehe bild:



Darum suche ich eine Lösung diese Problems oder eine andere Möglichkeit auch mit gdi+ falls nötig!

MfG schlagzu
Miniaturansicht angehängter Grafiken
unbenannt.png  
  Mit Zitat antworten Zitat