• Domingo 19 de Mayo de 2024, 03:06

Autor Tema:  Coordenadas dentro de las formas [WinForms]  (Leído 3351 veces)

yoko911

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Coordenadas dentro de las formas [WinForms]
« en: Martes 26 de Octubre de 2010, 09:09 »
0
He aquie l dilema, puse una forma cualquiera, agrego un boton, al evento MouseEnter del boton le agrego el siguiente cdigo

Código: C#
  1. private void btncomponente_MouseEnter(object sender, EventArgs e)
  2.         {
  3.            
  4.             //coordenadas
  5.             Point xy = new Point(Cursor.Position.X, Cursor.Position.Y);
  6.             Point raton = new Point(this.PointToClient(xy).X, this.PointToClient(xy).Y);
  7.  
  8.             Point OrigenBtn = new Point(btncomponente.Location.X, btncomponente.Location.Y);
  9.             //Puntos Basicos del boton
  10.             Point IzqSup = new Point(OrigenBtn.X, OrigenBtn.Y);
  11.             Point DerInf = new Point(OrigenBtn.X + btncomponente.Height, OrigenBtn.Y + btncomponente.Width);
  12.  
  13.             if (raton.X >= IzqSup.X && raton.X < IzqSup.X + 5)
  14.             {
  15.                 btncomponente.SetBounds(btncomponente.Left + 10, btncomponente.Top,
  16.                 btncomponente.Width, btncomponente.Height);
  17.                 //Mover botno derecha 10px
  18.             }
  19.             if (raton.X > DerInf.X - 5 && raton.X <= DerInf.X)
  20.             {
  21.                 btncomponente.SetBounds(btncomponente.Left - 10, btncomponente.Top,
  22.                 btncomponente.Width, btncomponente.Height);
  23.                 //Mover botno IZQUIERDA 10px
  24.             }
  25.             if (raton.Y >= IzqSup.Y && raton.Y < IzqSup.Y + 5)
  26.             {
  27.                 btncomponente.SetBounds(btncomponente.Left , btncomponente.Top + 10,
  28.                 btncomponente.Width, btncomponente.Height);
  29.                 //Mover botno ABAJO 10px
  30.             }
  31.             if (raton.Y > DerInf.Y - 5 && raton.Y <= DerInf.Y)
  32.             {
  33.                 btncomponente.SetBounds(btncomponente.Left, btncomponente.Top - 10,
  34.                                         btncomponente.Width, btncomponente.Height);
  35.                 //Mover botno ARRIBA 10px
  36.             }
  37.  
  38.         }
  39.  

el codigo hace que el boton "huya" del cursor y que no le puedas dar click, claro a menos q s eas rapido, el problema entra en el momento que
el boton sale de la forma, quiero agregar codigo para q si el boton sale por la izquierda aparesca en la derecha y asi.. el problema son las coordenadas ia trate con this.Location.x,this.Location.y pero me dan coordenadas mui raras, cabe mencionar que converti las coordenads del punter de coordenadas de pantalla (scree) a cliente, la verdad nose mui bien q signifique pero funciono mi programa,
a alguna perosna que sepa como modificar las coordenadas o coomo obtener coordenadas del la forma,
Gracias...

.net

  • Miembro MUY activo
  • ***
  • Mensajes: 181
  • Nacionalidad: mx
    • Ver Perfil
Re: Coordenadas dentro de las formas [WinForms]
« Respuesta #1 en: Lunes 1 de Noviembre de 2010, 21:57 »
0
Mira estuve provando el siguiente codigo:

   private void Form1_Load(object sender, EventArgs e)
        {
            MessageBox.Show("X: " + Convert.ToString(this.Location.X) + " Y: " + Convert.ToString(this.Location.Y));
        }
 El cual si te da las coordenadas del form activo, puedes debugging para ver si te esta enviando las coordenadas correctamente.

Otro detalle es calcular el tamaño de la form para ver si el boton se sale de alli, this.Location.X y el Y te dan el inicio del form ose la esquina superior izquierda de alli debes de calcular que tanto se debe de mover el mouse hacia la derecha o hacia la abajo dependiendo de la coordenada que se encuentra actualmente

Espero sirva!
La lógica lleva a más lógica

Apoyo a un mundo OPEN SOURCE!!!

Eso si es el paraíso

yoko911

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Coordenadas dentro de las formas [WinForms]
« Respuesta #2 en: Martes 2 de Noviembre de 2010, 08:08 »
0
Cita de: ".net"
Mira estuve provando el siguiente codigo:

   private void Form1_Load(object sender, EventArgs e)
        {
            MessageBox.Show("X: " + Convert.ToString(this.Location.X) + " Y: " + Convert.ToString(this.Location.Y));
        }
 El cual si te da las coordenadas del form activo, puedes debugging para ver si te esta enviando las coordenadas correctamente.

Otro detalle es calcular el tamaño de la form para ver si el boton se sale de alli, this.Location.X y el Y te dan el inicio del form ose la esquina superior izquierda de alli debes de calcular que tanto se debe de mover el mouse hacia la derecha o hacia la abajo dependiendo de la coordenada que se encuentra actualmente

Espero sirva!

Hola interesante, gracias pero encontre otra forma.
cree un nuevo rectangulo con el tamaño i las coordenadas de la form
i utilise la propiedad .Contain para q me dijera cuando sale d el forma
Código: C#
  1. Rectangle win = this.ClientRectangle;
  2. if( !win.Contain(<coordenada del centro del boton>) )
  3. {
  4.     //instrucciones para cuando salga de la ventan;
  5. }
  6.  
ahora el problema es que qiero que valla dibujando una linea por donde va pasando, i si nomas calculo la coordenada inicial, i ia que se mueve pues la coordenada final
y
Código: C#
  1. graphics g = this.CreateGraphics();
  2.  
el problema es que como la linea se dibuja abajo de el boton al moverse el boton, la linea desaparece puesto que no eh construido el metodo
Paint de la forma. alguna idea para que se queden las lineas dibujadas?
no se me okurre ninguna forma de implementar el metodo paint...
Ayuda D: :ouch:
MUCHAS GRACIAS

morringos

  • Miembro activo
  • **
  • Mensajes: 65
  • Nacionalidad: 00
    • Ver Perfil
Re: Coordenadas dentro de las formas [WinForms]
« Respuesta #3 en: Martes 2 de Noviembre de 2010, 17:26 »
0
Lo que puedes hacer para tu problema es utilizando el método paint y con uso de Bitmap.


Saludos!;
Morringos Phyps!; ^_^