CLR: .Net / Mono / Boo / Otros CLR > C#
Mover PictureBox con el teclado
(1/1)
fercho1q:
AMIGos me peueden decir como hago para mover un pictureBOx la verdad es qu e si le muevo pero solo una vez lo que no se es como mover el picture box varias veces presionando la misma tecla. este es el codigo que tengo
if(e.Keychar == 'd')
{
pictureBox.Location = new Point(192,321);
}
les agradeceria mucho si me ayudan
Jeysscarr:
Hola fercho1q, realmente si te entendi bien, es algo sencillo.
Si lo que quieres es al mantener la tecla presionada se siga moviendo el picture, agrega un un control Timer y habilitalo, en su evento Tick que se genera cada 100 milisegundos por defecto determino qué tecla está presionada. En los eventos KeyDOwn y KeyUp del formulario principal, guardo el valor de la tecla presionada en una variable statica de tipo KEYS.
Por ultimo cuando determino que tecla es, simplemente agrego un pixel o quito un pixel de la coordenada actual en X o Y segun sea el caso..
Izquierda: quito un pixel de X
Derecga: agrego un pixel a X
Arriba: Quito un pixel a Y
Abajo: Agrego un pixel a Y
Tambien puedes tu si lo deseas determinar si estan presionadas las teclas Arriba e Izquierda que el picture se mueva en forma diagonal, para lo que tendrias que restar un punto en Y y otro en X.
--- Código: C# ---static Keys tecla; private void Form1_KeyDown(object sender, KeyEventArgs e) { tecla = e.KeyCode; } private void Form1_KeyUp(object sender, KeyEventArgs e) { tecla = Keys.Escape; } private void timer1_Tick(object sender, EventArgs e) { switch (tecla) { case Keys .Left: this.pictureBox1.Location = new Point(pictureBox1.Location.X - 1, pictureBox1.Location.Y); break; case Keys.Right : this.pictureBox1.Location = new Point(pictureBox1.Location.X + 1, pictureBox1.Location.Y); break; case Keys.Up : this.pictureBox1.Location = new Point(pictureBox1.Location.X, pictureBox1.Location.Y-1); break; case Keys.Down : this.pictureBox1.Location = new Point(pictureBox1.Location.X , pictureBox1.Location.Y+1); break; } }
para que se mueva mas rapido, disminuye el valor de la propiedad intervalos del timer
Navegación
Ir a la versión completa