• Viernes 29 de Marzo de 2024, 09:09

Autor Tema:  Mover PictureBox con el teclado  (Leído 8220 veces)

fercho1q

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Mover PictureBox con el teclado
« en: Sábado 15 de Mayo de 2010, 05:17 »
0
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

  • Miembro MUY activo
  • ***
  • Mensajes: 134
  • Nacionalidad: co
    • Ver Perfil
Re: Mover PictureBox con el teclado
« Respuesta #1 en: Sábado 15 de Mayo de 2010, 15:23 »
0
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#
  1. static Keys tecla;
  2.         private void Form1_KeyDown(object sender, KeyEventArgs e)
  3.         {
  4.             tecla = e.KeyCode;
  5.         }
  6.  
  7.         private void Form1_KeyUp(object sender, KeyEventArgs e)
  8.         {
  9.             tecla = Keys.Escape;
  10.         }
  11.  
  12.         private void timer1_Tick(object sender, EventArgs e)
  13.         {
  14.            
  15.                 switch (tecla)
  16.                 {
  17.                     case Keys .Left:
  18.                         this.pictureBox1.Location = new Point(pictureBox1.Location.X - 1, pictureBox1.Location.Y);
  19.                         break;
  20.  
  21.                     case Keys.Right :
  22.                         this.pictureBox1.Location = new Point(pictureBox1.Location.X + 1, pictureBox1.Location.Y);
  23.                         break;
  24.  
  25.                     case Keys.Up :
  26.                         this.pictureBox1.Location = new Point(pictureBox1.Location.X, pictureBox1.Location.Y-1);
  27.                         break;
  28.  
  29.                     case Keys.Down :
  30.                         this.pictureBox1.Location = new Point(pictureBox1.Location.X , pictureBox1.Location.Y+1);
  31.                         break;
  32.                 }
  33.            
  34.         }
  35.  

para que se mueva mas rapido, disminuye el valor de la propiedad intervalos del timer
Nuestro poder está creciendo mas rápido que nuestra sabiduria