Hola, intento hacer lo siguiente, por asi decirlo me gustaría lograr hacer rebotar una pelota dentro de un formulario, supongamos que la pelota es un Picturebox, solo deseo que el movimiento sea en dos direcciones, ascendente y descendente (por ahora no me interesa que se mueva en cualquier dirección)
entonces si pincho el picture con el mouse y lo muevo de hacia arriva muevo el picture en esa direccion y lo contrario.
Mi problema no se como representar la inercia, es decir darle un empujón al picture, y que este se detenga según la velocidad y distancia en la que movi el picture.
bien creo que se darán cuenta mis intenciones, ahora pongo el código de lo que tengo echo.
solo se necesita un Picture1 en el formulario
Option Explicit
Private Declare Function GetCursorPos Lib "user32.dll" (ByRef lpPoint As POINTAPI) As Long
Private Declare Function ScreenToClient Lib "user32.dll" (ByVal hwnd As Long, ByRef lpPoint As POINTAPI) As Long
Private Type POINTAPI
X As Long
Y As Long
End Type
Dim yy As Long
Dim PT As POINTAPI
Dim lContador As Long
Dim Desendente As Boolean
Dim LastTop As Long
Dim Inercia As Long
Dim Aceleracion As Long
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
GetCursorPos PT
ScreenToClient Me.hwnd, PT
yy = (PT.Y * Screen.TwipsPerPixelY) - Picture1.Top
End Sub
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim lY As Long
If Button = 1 Then
GetCursorPos PT
ScreenToClient Me.hwnd, PT
lY = (PT.Y * Screen.TwipsPerPixelY) - yy
If lY + Picture1.Top > 0 Then
If lY < (Me.ScaleHeight - Picture1.Height) Then
If Picture1.Top <> lY Then
Picture1.Top = lY
Desendente = LastTop < Picture1.Top
LastTop = Picture1.Top
End If
Else
Picture1.Top = Me.ScaleHeight - Picture1.Height
End If
Else
Picture1.Top = 0
End If
End If
End Sub
Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Debug.Print IIf(Desendente, "Baja", "Sube")
End Sub
Supongo que para la solución abra que emplear al menos dos Timer