Mirror

How to draw a rotated ellipse at a specific angle (2) (Views: 21)

 Problem/Question/Abstract:I created an object based off of TGraphicControl and I used the TCanvas.Ellipse method to create an ellipse. I would like to give the user the ability to rotate this ellipse. I would also like to give the user the ability after rotating the ellipse to still adjust the size and shape.Answer:You can use Win32GDI Routines. It works like this:procedure RotatedEllipse(aCanvas: TCanvas; X1, Y1, X2, Y2: Integer);var  T, O: TXForm; {in unit Windows}begin  { ... }  SetGraphicsMode(aCanvas.Handle, GM_Advanced);  GetWorldTransform(aCanvas.Handle, O);  {Angle in degree}  T.eM11 := 1 * Cos(w / 360 * Pi * 2);  T.eM22 := 1 * Cos(w / 360 * Pi * 2);  T.eM12 := 1 * Sin(w / 360 * Pi * 2);  T.eM21 := 1 * -Sin(w / 360 * Pi * 2);  T.eDX := Round((X1 + X2) / 2);  T.eDY := Round((Y1 + Y2) / 2);  ModifyWorldTransform(aCanvas.Handle, T, MWT_LEFTMULTIPLY);  Canvas.Ellipse(X1, Y1, X2, Y2);  SetWorldTransform(TheDraw.Handle, O);end;

<< Back to main page