Mover Un Picturebox Con El Ratón


Ir a la página 1, 2  Siguiente

Objetivo: Mover Un Picturebox Con El Ratón
Hola, para mover un picturebox (o cualquier otra cosa) con el ratón, utilicé el evento picturebox_mouseDrag() y simplemente asigné mouse.X y mouse.Y a mi picturebox.X y picturebox.Y respectivamente.

Pero eso hace que el picturebox tiemble de un lado para otro rápidamente ¿Cómo es la manera correcta de hacer esto?


Gracias.

Objetivo: Re: Mover Un Picturebox Con El Ratón
Te señalo esta pagina (mover sin Drag&Drop) con ejemplos que escribi en el WIKI del foro italiano de los programadores Gambas:

http://www.gambas-it.org/wiki/index...a_Drag_%26_Drop

En partiicular alli lee el paragrafo: " Spostamento con riferimento alla posizione del cursore del mouse rispetto al contenitore "

última edición por vuott el Miercoles, 22 Julio 2015, 20:07; editado 3 veces
Perfil MP  
Objetivo: Re: Mover Un Picturebox Con El Ratón
Gracias, funciona perfectamente, ahora sólo me falta entender por qué

Objetivo: Re: Mover Un Picturebox Con El Ratón
buenas,

che vuott vi el codigo asi de apuro, al toque, y lo que me llamo la atencion en la propiedad tag es que es un array

la propiedad tag se puede usar un array de palabras o números?

la propiedad tag es de tipo variant?


Property Tag As Variant

Devuelve o establece una etiqueta para el control .
Esta propiedad se destina para el programador y nunca es utilizado por el componente.
Puede contener cualquier Valor tipo Variant.


jajajaj tanto tiempo y recién hoy me doy cuenta que en la propiedad tag se pueden guardar decenas de datos con array lo cual es sustancial pues se puede manipular infinidad de situaciones.

hoy aprendí algo nuevo jajajj, gracias vuott.

Public Sub Form_Open()

Button1.Tag = [0, 0]

End


Public Sub Button1_MouseDown()

With Button1
.Tag[0] = Mouse.X
.Tag[1] = Mouse.Y
End With

End


Public Sub Button1_MouseMove()

' Il "Button" sarà posizionata in questo caso, rispetto al cursore del Mouse, alle coordinate come appresso determinate:
With Button1
.X = Mouse.ScreenX - Me.ScreenX - .Tag[0]
.Y = Mouse.ScreenY - Me.ScreenY - .Tag[1]
End With

End

última edición por v3ctor el Jueves, 23 Julio 2015, 00:50; editado 2 veces
Objetivo: Re: Mover Un Picturebox Con El Ratón
Cuesta entender el uso de la propiedad tag para otras cosas que no sean las habituales, por ejemplo índices.
Viene de costumbres de Visual Basic

Todo es cuestión de comenzar a probar cosas con la propiedad tag y ver usos distintos.
Lo que no podemos cambiar es nuestra mente, sobre todo si no está acostumbrada.

En ese caso hay que hacer un poco de yoga y ver mas allá de lo de siempre..no creo que
pueda, cuando no es el ruido de una obra, es el ruido de una moto, el ruido de una carpintería..
alguien que da un grito..auunnn, auuun, la madre que los parió!.

Una canción decía.."Quiero una motocicleta.."...pues yo digo..."Quiero una metralletaaaa..."

Saludos

Objetivo: Re: Mover Un Picturebox Con El Ratón
Lo puse como me dijiste en el wiki (solo que lo cambié al estilo novato porque estoy más acostumbrado), como decía, funciona perfectamente, pero lo que no entiendo es por qué no se dispara el evento mousemove si el ratón se mueve dentro del control, sino que se dispara cuando haces clic+mueves el ratón. Para mí eso es un dragmouse clicar y arrastrar ¿no?

Public Sub PBresize_MouseDown()

ratoninicialX = Mouse.X
ratoninicialY = Mouse.Y

End

Public Sub PBresize_MouseMove()

PBresize.x = PBresize.x + Mouse.x - ratoninicialX
PBresize.Y = PBresize.Y + Mouse.y - ratoninicialY

End

Objetivo: Re: Mover Un Picturebox Con El Ratón
v3ctor escribió: [Ver mensaje]
me doy cuenta que en la propiedad tag se pueden guardar decenas de datos con array lo cual es sustancial pues se puede manipular infinidad de situaciones.

No exageres con los Variant !
El tipo Variant ocupa 16 byte en un sistema de 64bit.





guadafan escribió: [Ver mensaje]
Lo puse como me dijiste en el wiki (solo que lo cambié al estilo novato porque estoy más acostumbrado), como decía, funciona perfectamente, pero lo que no entiendo es por qué no se dispara el evento mousemove si el ratón se mueve dentro del control, sino que se dispara cuando haces clic+mueves el ratón.

El evento MouseMove() se dispara cuando el ratón se mueve dentro del control mientras un botón del ratón es presionado.

Perfil MP  
Objetivo: Re: Mover Un Picturebox Con El Ratón
Vuott:

El ultimo código de los tres ejemplos no parece "completo", o funcional del todo.
Prueba a desplazar el objeto sobre el contenedor padre original y ahora quita el dedo del botón del ratón.
El componente se pierde en el segundo contenedor...no se ve!.
( Se ve que cambia en la consola a otro contenedor padre)

¿ No necesitas usar el eje "Y" cuando le dices que ahora tiene un "nuevo padre"..contenedor padre.?..

En cambio si lo llevas hasta el panel y quitas el dedo del botón del ratón el objeto cambia de contenedor padre.


Saludos

Objetivo: Re: Mover Un Picturebox Con El Ratón
Shell escribió: [Ver mensaje]
El ultimo código de los tres ejemplos no parece "completo", o funcional del todo.

Sì, Shell, era solo un simple ejemplo por el .Reparent, pero era demasiado parcial.

Ahora lo he completado.......espero.

http://www.gambas-it.org/wiki/index...et.C3.A0_Parent


Gracias y saludos.

última edición por vuott el Sabado, 25 Julio 2015, 16:45; editado 2 veces
Perfil MP  
Objetivo: Re: Mover Un Picturebox Con El Ratón
vuott escribió: [Ver mensaje]

Ahora lo he completado.......espero.


Ahora ya funciona!. 144amarillos_1437848327_452360

Ah, podíamos también haber usado: ( Y así no usamos el nombre del formulario actual, que puede ser cualquiera ).

Public Sub PictureBox1_MouseUp()

If Panel1.Children.Count = 0 And Mouse.Inside(Panel1) Then
'If PictureBox1.Parent.Name = "FMain3" And Mouse.Inside(Panel1) Then
With PictureBox1
'Se realiza la modificación del contenedor padre del objeto
'el contenedor "Panel1" pasa a ser el nuevo "Padre" del objeto
.Reparent(Panel1, .X - Panel1.X, .y - Panel1.y)
Print "Nuevo contenedor padre: " & .Parent.Name
End With
End If

End


Es que en mi ejemplo Panel1 estaba vació.

cambiodecontenedorpadre

Y a todo esto, ¿ cómo es que no usasteis Drag Drop ?.

Saludos

última edición por Shell el Sabado, 25 Julio 2015, 19:40; editado 2 veces
Ir a la página 1, 2  Siguiente

Página 1 de 2


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.1157s (PHP: -23% SQL: 123%)
Consultas SQL: 27 - Debug off - GZIP Activado