RotateObject




Private Direction As Long
Private Xo As Long, Yo As Long
Private Sub Form_Click()
If Direction = 1 Then
Direction = 359'counterclockwise
Else
Direction = 1'clockwise
End If
End Sub

Private Sub Form_Load()
Direction = 1'clockwise
End Sub

Private Sub Form_Resize()
Xo = Me.ScaleWidth \ 2
Yo = Me.ScaleHeight \ 2
End Sub

Private Sub Timer1_Timer()
Dim i As Byte
Dim r As Single
Dim Pi As Single
Dim theta As Single
Dim plotx, ploty, dx, dy As Integer
Xo = Form1.Width / 2
'get center, image is to rotate about

Yo = Form1.Height / 2
Pi = 4 * Atn(1)
dx = Image1.Left - Xo
'get horizontal distance from center

dy = Image1.Top - Yo
' "" vertical ""

theta = Atn(dy / dx)
'get angle about center

r = dx / Cos(theta)
'get distance from center

plotx = r * Cos(theta + Direction * Pi / 180) + Xo
'get new x rotate about center

ploty = r * Sin(theta + Direction * Pi / 180) + Yo
'""y""

Image1.Left = plotx
Image1.Top = ploty
End Sub
You can rotate any object about a center using polar
coordinates. Simply define your center Xo and Yo, which in
this case is the center of a form. The amount of rotation is
determined by direction, one degree:










( rotateobject.html )- by Paolo Puglisi - Modifica del 17/12/2023