Uso el evento MouseMove para mover objetos (por ejemplo, etiquetas).MouseMove sensibilidad
principio simple (esquema):
OnMouseMove(e MouseEventArgs)
if e.Button == Left
deltaX = e.X - lastX
foreach label in labels
label.Location.X += deltaX
lastX = e.X
Una vez que el aumento de número de etiquetas, comienzo a ver las etiquetas traza a lo largo de la trayectoria de movimiento. Tengo algo así como I I II III II I I III II, pero quiero tener algo como I I I I como rastros. Me gustaría saber cuándo el mouse "comienza" y "se detiene para moverse" algo así.
Muevo las etiquetas a lo largo de un eje horizontal. MouseDown
(establecer LastX) y continuar. Nadie sabe cuándo se detiene, solo la sensibilidad del movimiento del mouse. Sin duda, puedo usar MouseUp
para saber cuándo termina el movimiento, pero si el usuario mantiene el botón presionado y deja de moverse, quiero reflejar la última posición de la etiqueta.
¿Hay alguna manera de evitar este tipo de rastros?
trataron
label.Visible = false
label.Location.X += deltaX
label.Visible = true
no ayuda.
parent.SuspendLayout y ResumeLayout no ayuda mucho, porque necesito hacer esto en cada movimiento del mouse, por lo que cualquier efecto.
hm. El problema es que muevo las etiquetas con mucha frecuencia. Tengo algo así como I I II II III II I I III II, pero quiero tener algo como I I I I I I I como rastros. Me gustaría saber cuándo el mouse "comienza" y "se detiene para moverse" algo así. Puedo hacer también el parent.Suspend/ResumeLayout() pero ... ¿cuándo? – serhio
@serhio: He editado para incluir un ejemplo de cómo puede utilizar SuspendDrawing/ResumeDrawing. Si te entiendo correctamente, las etiquetas no se mueven "juntas" (las ves moverse por separado). Esta solución se encargará de eso. –
@Zach. Sí. pero...el problema es que quiero hacer en lugar de hacer 10 movimientos (digamos del 1 al 20) solo 5. En gros, cuando muevo el "contenedor de etiquetas" no necesito ver las etiquetas en movimiento, solo comienzo la final, y quizás una punto intermedio es suficiente. – serhio