Fuente: http://elpaladintecnologico.blogspot.com.ar/2011/08/que-se-mueva-un-objeto-con-el-cursor-c.html
Este ejemplo hace que un label se mueva cada 100 milisegundos y con el teclado me pueda mover arriba, abajo, a la izquierda o derecha.
El control que uso para moverme en el tiempo el el Timer. Entonces, los únicos dos objetos que uso en el formulario son el timer y un label que se mueve. El resto es puro código.
Por ejemplo si con el teclado presiono la flecha arriba, pues el objeto se moverá arriba, si presiono la tecla abajo, se moverá abajo.
Código:
namespace viboritas
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private int posicion;
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Interval = 100;
switch (posicion)
{
case 0:
label1.Location = new Point(this.label1.Location.X, this.label1.Location.Y - 10);
posicion = 0;
break;
case 1:
label1.Location = new Point(this.label1.Location.X, this.label1.Location.Y + 10);
posicion = 1;
break;
case 2:
label1.Location = new Point(this.label1.Location.X-10,this.label1.Location.Y);
posicion = 2;
break;
case 3:
label1.Location = new Point(this.label1.Location.X + 10,this.label1.Location.Y);
posicion = 3;
break;
}
}
private void Form1_Load(object sender, EventArgs e)
{
timer1.Start();
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyData)
{
case Keys.Up:
posicion = 0;
break;
case Keys.Down:
posicion = 1;
break;
case Keys.Left:
posicion = 2;
break;
case Keys.Right:
posicion = 3;
break;
}
}
private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
}
}
}
La sección clave es la sección Form1_KeyDown.
Ahí se define que sucederá si Se presiona la tecla arriba (key.up), abajo (key.down) o a la izquierda y derecha (key.left, key.right).
El resto es simplemente cambiar la posición de mi objeto dentro del sistema:
label1.Location = new Point(this.label1.Location.X, this.label1.Location.Y+10 );
No hay comentarios:
Publicar un comentario