hey! como estan!
Lo que quiero preguntar es lo siguiente: ¿Cómo hacer scroll en un scrollablecontrol mediante drag?
lo que tengo es un PictureBox gigantesco (4096x4096) dentro de un Panel (Que hereda ScrollableControl) así que lo que hice fue lo siguiente:
Añadí una variable InitGrab de tipo point
Con el evento MouseDown controlo la inicialización de InitGrabCódigo:Private InitGrab as point
y con el evento MouseMove controlo el dragCódigo:... Private Sub MapArea_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MapArea.MouseDown Select Case e.Button 'aquí va más codigo Case Windows.Forms.MouseButtons.Middle GrabInit = e.Location End Select End Sub
MapArea es mi picturebox y CDrawArea es mi panelCódigo:Private Sub MapArea_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MapArea.MouseMove CDrawArea.Focus() Dim Gx As Integer = (e.X - 16) / 32, Gy As Integer = (e.Y - 16) / 32& Gy Select Case e.Button Case Windows.Forms.MouseButtons.Left Case Windows.Forms.MouseButtons.Middle Dim NowGrab As Point = e.Location - GrabInit With CDrawArea.HorizontalScroll If .Value - NowGrab.X < .Minimum Then .Value = .Minimum ElseIf .Value - NowGrab.X > .Maximum Then .Value = .Maximum Else .Value -= NowGrab.X End If End With With CDrawArea.VerticalScroll If .Value - NowGrab.Y < .Minimum Then .Value = .Minimum ElseIf .Value - NowGrab.Y > .Maximum Then .Value = .Maximum Else .Value -= NowGrab.Y End If End With End Select End Sub
El problema es que funciona parcialmente bien. Hace scroll en la dirección correcta pero tiene ciertos clichés cuando lo muevo, el scroll se loquea y se raya fenomenalmente... que puedo hacer?