Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- type
- TCanvasHelper = class helper for TCanvas
- public
- function SetRotation(const Origin: TPoint; Angle: Single): Boolean;
- function ResetRotation: Boolean;
- end;
- implementation
- { TCanvasHelper }
- function TCanvasHelper.SetRotation(const Origin: TPoint; Angle: Single): Boolean;
- var
- XForm: TXForm;
- RadAngle: Single;
- SinAngle: Single;
- CosAngle: Single;
- begin
- if (GetGraphicsMode(Handle) <> GM_ADVANCED) and (SetGraphicsMode(Handle, GM_ADVANCED) = 0) then
- raise Exception.Create('Failed to set GM_ADVANCED graphics mode.');
- RadAngle := Angle * Pi / 180;
- SinAngle := Sin(RadAngle);
- CosAngle := Cos(RadAngle);
- XForm.eM11 := CosAngle;
- XForm.eM12 := SinAngle;
- XForm.eM21 := -SinAngle;
- XForm.eM22 := CosAngle;
- XForm.eDx := Origin.X - CosAngle * Origin.X + SinAngle * Origin.Y;
- XForm.eDy := Origin.Y - CosAngle * Origin.Y - SinAngle * Origin.X;
- Result := SetWorldTransform(Handle, XForm);
- end;
- function TCanvasHelper.ResetRotation: Boolean;
- var
- XForm: TXForm;
- begin
- ZeroMemory(@XForm, SizeOf(XForm));
- Result := ModifyWorldTransform(Self.Handle, XForm, MWT_IDENTITY);
- end;
Advertisement
Add Comment
Please, Sign In to add comment