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: |