Colocamos un picture box en el formulario

Yo le puse una imagen de un circulo, de nombre le puse "figG1".

hacemos doble click sobre la imagen.

Seleccionamos la propiedad keyDown.
Código de figG1.
Private Sub figG1_KeyDown(KeyCode As Integer, Shift As Integer)
If (KeyCode = vbKeyDown) Then
figG1.Top = figG1.Top + MoveTime
End If
If (KeyCode = vbKeyUp) Then
figG1.Top = figG1.Top - MoveTime
End If
If (KeyCode = vbKeyLeft) Then
figG1.Left = figG1.Left - MoveTime
End If
If (KeyCode = vbKeyRight) Then
figG1.Left = figG1.Left + MoveTime
End If
Dentro de la subrutina figG1_KeyDown(KeyCode As Integer, Shift As Integer) realizamos las comprobaciones para detectar que tecla se ha pulsado y la función que debe realizar el programa cuando se precione dicha tecla tecla. También tenemos unas condiciones que definen cual es el espacio en el cual se puede desplazar el objeto.
Para mover el objeto presionando una tecla realizamos la siguiente comprobación.
If (KeyCode = vbKey...) then vbKeyDown = tecla abajo vbKeyUp = tecla arriba vbKeyRight = tecla derecha vbKeyLeft = tecla izquierda
Para mover la figuta en forma vertical utilizamos la propiedad .Top. Entonces para que la figura se mueva hacia arriba utilizamos el siguiente código.figG1.Top = figG1.Top + MoveTime.
MoveTime es una constante definida en la sub rutina form load. Variando el valor de esta constante, aumentamos o disminuimos la velocidad de deslazamiento del objeto.
Private Sub Form_Load() MoveTime = 500 End Sub
Para que la figura se mueva hacia abajo usamos la siguiente linea de código. figG1.Top = figG1.Top - MoveTime. Como pueden observar lo que cambia es únicamente el signo.
Para mover la figuta en forma horizontal utilizamos la propiedad .Left. Para que la figura se mueva hacia la izquierda utilizamos el siguiente código. figG1.Left = figG1.Left - MoveTime. Para que se mueva hacia la derecha, figG1.Left = figG1.Left + MoveTime.
En este punto ya podemos mover el objeto utilizando las teclas de dirección.
Ahora vamos a delimitar el área en la cual el objeto se moverá, para eso realizamos comparaciones con >= o <= dependiendo de que limite se trate. Para determinar el área debemos colocar la imagen dentro de los limites propuestos y tener en cuenta los valores de las porpiedades .Top y .Left.
![]() |
Limite derecho |
![]() |
Limite izquierdo |
![]() |
Limite superior |
![]() |
Limite inferior |
Una vez establecidos los limites procedemos a hacer las comparaciones.
Para delimitar los limites derecho e izquierdo utilizamos las siguientes lineas de codigo.
Si la figura llega al limite derecho entonces le damos el valor de ese limite a la propiedad Left del objeto
If (figG1.Left <= 360) Then figG1.Left = 360 End If
Hacemos lo mismo con el limite derecho el superior y el inferior teniendo en cuenta las propiedades left y top.
If (figG1.Left <= 360) Then figG1.Left = 360 End If If (figG1.Left >= 3960) Then figG1.Left = 3960 End If If (figG1.Top <= 480) Then figG1.Top = 480 End If If (figG1.Top >= 2760) Then figG1.Top = 2760 End If End Sub
Si tienen alguna duda comenten, con gusto les responderé.
En el próximo post veremos como detectar si dos objetos han colisionado.
Publicar un comentario