Private WithEvents panel As Panel
Private WithEvents pic As PictureBox
Private x, y As Integer
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
Select Case e.KeyCode
Case Keys.Up
panel.AutoScrollPosition = New Point(0 - panel.AutoScrollPosition.X, 1 - panel.AutoScrollPosition.Y)
Case Keys.Down
panel.AutoScrollPosition = New Point(0 - panel.AutoScrollPosition.X, -1 - panel.AutoScrollPosition.Y)
Case Keys.Left
panel.AutoScrollPosition = New Point(1 - panel.AutoScrollPosition.X, 0 - panel.AutoScrollPosition.Y)
Case Keys.Right
panel.AutoScrollPosition = New Point(-1 - panel.AutoScrollPosition.X, 0 - panel.AutoScrollPosition.Y)
Case Else
Return
End Select
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
panel = New Panel With {.BorderStyle = BorderStyle.Fixed3D, .Dock = DockStyle.Fill, .AutoScroll = True}
pic = New PictureBox With {.BorderStyle = BorderStyle.None, .SizeMode = PictureBoxSizeMode.AutoSize}
panel.Controls.Add(pic)
Me.Controls.Add(panel)
Using ofd As New OpenFileDialog With {.Filter = "Image|*.bmp;*.jpg;*.png"}
If ofd.ShowDialog = Windows.Forms.DialogResult.OK Then
pic.Image = Image.FromFile(ofd.FileName)
End If
End Using
End Sub
Private Sub pic_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles pic.MouseDown
If e.Button = Windows.Forms.MouseButtons.Left Then
pic.Cursor = Cursors.Hand
x = e.X
y = e.Y
End If
End Sub
Private Sub pic_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles pic.MouseMove
If e.Button = Windows.Forms.MouseButtons.Left Then
Dim dx As Integer = x - e.X
Dim dy As Integer = y - e.Y
panel.AutoScrollPosition = New Drawing.Point((dx - panel.AutoScrollPosition.X), (dy - panel.AutoScrollPosition.Y))
End If
End Sub
Private Sub pic_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles pic.MouseUp
pic.Cursor = Cursors.Arrow
End Sub
End Class