Hola un saludo
Me encuentro desarrollando un práctica de simulación de protector de pantalla.
Requiero mover en el formulario de mi programa una imagen, un picturebox en concreto:
Bien ahora, sé que puedo cambiar la localización de la imagen con .location tanto en eje x, y ; quiero mover la imagen hasta que llegue al borde, que en mi caso seria (666,0) osea que choca con el borde derecho en el pixel 666 del formulario.
Lo que pasa es que quiero ver que vaya cambiando de posición y para ello establezco mis variables X,Y y voy comparándolas, mientras que X no sea 666, aumento a X = X+1 y asigno la nueva localización : New point (X,Y).
El problema es que el programa ejecuta todo ésto de inmediato y no lo muestra, quiero que vaya ejecutando el cambio de localización y poder verlo. Para ésto quise hacer una pausa en pantalla de milisegundos con threading.sleep, pero no se que ocurre que el formulario pasado dos segundos se paraliza.
Usé un timer para que pasado 2 segundos empezara a ejecutar el código para mover la imágen.
Mi código :
Public Class Form1
Public x As Integer
Public y As Integer
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
x = 0
y = 0
'iniciar la imagen en 0,0
pictureAstro.Location = New Point(x, y)
'Agregar la transparencia y que pueda verse encima el astro
PictureBox1.Controls.Add(pictureAstro)
'Establecemos el intervalo de tiempo para que inicie el evento
Timer1.Interval = 2000 '2segundos
Timer1.Start()
End sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
'Pasado el tiempo empezamos a mover la imagen
'Mover la imagen hasta chocar con borde en eje x 666
While x <> 666
x = x + 1
pictureAstro.Location = New Point(x, y)
System.Threading.Thread.Sleep(100)
End While
End Sub
End class
Hay alguna idea de como solucionarlo ó como poder desplazar la imágen y ver el cambio de posición en tiempo real?