TLama

Untitled

Jun 13th, 2014
545
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 1.13 KB | None | 0 0
  1. type
  2.   TCanvasHelper = class helper for TCanvas
  3.   public
  4.     function SetRotation(const Origin: TPoint; Angle: Single): Boolean;
  5.     function ResetRotation: Boolean;
  6.   end;
  7.  
  8. implementation
  9.  
  10. { TCanvasHelper }
  11.  
  12. function TCanvasHelper.SetRotation(const Origin: TPoint; Angle: Single): Boolean;
  13. var
  14.   XForm: TXForm;
  15.   RadAngle: Single;
  16.   SinAngle: Single;
  17.   CosAngle: Single;
  18. begin
  19.   if (GetGraphicsMode(Handle) <> GM_ADVANCED) and (SetGraphicsMode(Handle, GM_ADVANCED) = 0) then
  20.     raise Exception.Create('Failed to set GM_ADVANCED graphics mode.');
  21.  
  22.   RadAngle := Angle * Pi / 180;
  23.   SinAngle := Sin(RadAngle);
  24.   CosAngle := Cos(RadAngle);
  25.   XForm.eM11 := CosAngle;
  26.   XForm.eM12 := SinAngle;
  27.   XForm.eM21 := -SinAngle;
  28.   XForm.eM22 := CosAngle;
  29.   XForm.eDx := Origin.X - CosAngle * Origin.X + SinAngle * Origin.Y;
  30.   XForm.eDy := Origin.Y - CosAngle * Origin.Y - SinAngle * Origin.X;
  31.  
  32.   Result := SetWorldTransform(Handle, XForm);
  33. end;
  34.  
  35. function TCanvasHelper.ResetRotation: Boolean;
  36. var
  37.   XForm: TXForm;
  38. begin
  39.   ZeroMemory(@XForm, SizeOf(XForm));
  40.   Result := ModifyWorldTransform(Self.Handle, XForm, MWT_IDENTITY);
  41. end;
Advertisement
Add Comment
Please, Sign In to add comment