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

[0] Índice de Mensajes

Ir a la versión completa