' nuestras variables
Dim Xo As Long ' x origen
Dim Yo As Long ' Y origen
Dim Xd As Long ' X destino
Dim Yd As Long ' Y destion
Dim giro As Integer ' un valor entre 0 y 359, pero podría ser entre 0 y 100 o 0 y 150000... especifica las subdivisiones para completar una vuelta completa
Const naranja = &H80FF& ' es el color para dibujar nuestra 'naranja'.
' el chackbox activa y desactiva el timer, que es donde se eejcuta la rutina de calculo y dibujado
Private Sub Check1_Click()
If Check1.Value = 0 Then
Check1.Caption = "Rotar"
Else
Check1.Caption = "Parar"
End If
Timer1.Enabled = Not Timer1.Enabled
End Sub
' al crear el formulario establecemos los valores iniciales
Private Sub Form_Load()
Timer1.Enabled = False ' paramos el timer y le damos un valor rápido al intérvalo...
Timer1.Interval = 1
VScroll1.max=359 ' limitamos nuestro scroll con la misma cantidad de pasos que queremos que gire de una vez nuestra naranaja
VScroll1.largechange=10
' dividimos el picturebox en 400 partes de ancho y alto, si el picturebox no es cuadrado del todo, los giros tendrán forma de elipse.... prueba a modificar el tamaño para verificarlo..
Picture1.Scale (-200, -200)-(400, 400)
Picture1.DrawWidth = 10 ' dibujaremos un punto, lo hacemos grande para que sea perceptible a la vista
Xo = 80 ' nuestra naranja no está en el centro del mundo. por tanto nuestra rotación es alrededor del mundo, no sobre su propio eje. (con un punto tampoco lo notaríamos, si girara sobre su eje)
Yo = 80
Me.Show ' antes que nada diibujamos nuestra naranjua para que se vea donde está colocada inicialmente
Call Timer1_Timer
End Sub
' cuando no actúa el timer, podemos rotar manualmente, paso a paso nuestra naranja
Private Sub VScroll1_Change()
giro = VScroll1.Value
Call Timer1_Timer
End Sub
' pot fin nuestra rutina de cálculo y dibujado
Private Sub Timer1_Timer()
Dim Radian As Double ' o single, para no despreciar decimales, aunque aquí nuestro 'mundo' (el picturebox) es entero
Radian = 6.28 / 360 * giro ' calculamos el ángulo
Xd = Cos(Radian) * Xo + Sin(Radian) * Yo ' calculamos la cordenada x de destino
Yd = Cos(Radian) * Yo - Sin(Radian) * Xo ' calculamos la cordenada y de destino
Picture1.Cls ' borramos el picturebox
Picture1.Circle (40, 40), 80, vbBlue ' dibujamos un círculo, como referencia visual
Picture1.PSet (Xd + 40, Yd + 40), naranja ' dibujamos nuestra naranja, le hemos añadido a 'X' e 'Y' 40, porque es la mitad de 80 , la distancia a la que se encuentra del centro, para que sea una rotación concéntrica, sino sería describiría el círculo desplazado respecto delcentro del mundo... prueba quitando los valores...
giro = (giro + 1) Mod 360 ' aumentamos el giro para el próximo ciclo, nota como truncamos el valor para que nunca exceda, y regrese al origen después del final...
End Sub