2009-07-06 6 views

Antwort

4

Dies ist in C#, sollte aber einfach genug sein, um in VB.Net zu replizieren.

private int currentX, currentY; 
private bool isDragging = false; 

private void myPictureBox_MouseDown(object sender, MouseEventArgs e) 
{ 
    isDragging = true; 

    currentX = e.X; 
    currentY = e.Y; 
} 

private void myPictureBox_MouseMove(object sender, MouseEventArgs e) 
{ 
    if (isDragging) 
    { 
    myPictureBox.Top = myPictureBox.Top + (e.Y - currentY); 
    myPictureBox.Left = myPictureBox.Left + (e.X - currentX); 
    } 
} 

private void myPictureBox_MouseUp(object sender, MouseEventArgs e) 
{ 
    isDragging = false; 
} 
+0

das ist absolut genial vielen Dank –

+0

übrigens Ihr Beispiel ist viel eleganter und einfacher als Microsoft (die nicht einmal mit Picturebox funktioniert) http://msdn.microsoft.com/en-us/library/ms973845.aspx –

+0

I Frage, ob dieser Code funktioniert oder nicht, da er nicht vom Koordinatenraum des Bildbox-Clients in einen gemeinsamen Koordinatenraum (Bildschirmbereich) konvertiert wird. – user79755

1

Hier einige VB.NET


    Private IsDragging As Boolean = False 
    Private StartPoint As Point 

    Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown 
     StartPoint = PictureBox1.PointToScreen(New Point(e.X, e.Y)) 
     IsDragging = True 
    End Sub 

    Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove 
     If IsDragging Then 
      Dim EndPoint As Point = PictureBox1.PointToScreen(New Point(e.X, e.Y))    
      PictureBox1.Left += (EndPoint.X - StartPoint.X) 
      PictureBox1.Top += (EndPoint.Y - StartPoint.Y) 
      StartPoint = EndPoint 
     End If 
    End Sub 

    Private Sub PictureBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp 
     IsDragging = False 
    End Sub 
+0

das ist auch sehr gut, aber ich frage mich, ob Sie die Antwort auf diese Frage wussten; http://stackoverflow.com/questions/1087130/moving-image-on-web-page –

0

Code ähnlich dem gegebenen Antworten gibt es in diesem DreamInCode.com thread. Eine andere Sache die Thread-Adressen ist die Bildbox innerhalb der Grenzen des Formulars zu halten und die Größe der Bildbox.