这是我的代码:
Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs) Handles PictureBox1.MouseMove
If (e.Button = Windows.Forms.MouseButtons.Left) Then
Me.PictureBox1.Location = New Point((Me.pbpos.X + (Control.MousePosition.X - Me.offset.X)), _
(Me.pbpos.Y + (Control.MousePosition.Y - Me.offset.Y)))
End If
End Sub
这是图片,尚未拖出。当然它不适合屏幕,虽然顶部和左侧是图片的边缘。 (灰色是面板)
现在,如果我将它向左拖动,这就是它的样子。
这种情况是就好了,因为图片真的很大,这就是为什么我需要能够拖动它..正如你在右下角看到的,现在,面板是可见的因为我拖了左上角的图片太多了(这不对)
现在,我真正想要的是它看起来像这样。
当我拖动时,如图片#2 我希望图片的边缘保持在那里。用户现在必须无法将其进一步拖到左上角,因为这是图片的最后一部分(从技术上讲,用户必须无法看到作为面板的背景)同样适用于另一方。
希望这更清楚:)
答案 0 :(得分:2)
试试这段代码:
Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs) Handles PictureBox1.MouseMove
If (e.Button = Windows.Forms.MouseButtons.Left) Then
Dim x As Integer = (Me.pbpos.X + (Control.MousePosition.X - Me.offset.X))
Dim y As Integer = (Me.pbpos.Y + (Control.MousePosition.Y - Me.offset.Y))
x = Math.Min(Math.Max(x, -(Me.PictureBox1.Width - Me.Panel1.Right)), 0)
y = Math.Min(Math.Max(y, -(Me.PictureBox1.Height - Me.Panel1.Bottom)), 0)
Me.PictureBox1.Location = New Point(x, y)
End If
End Sub