2012-09-26 11 views
6

Ich habe versucht, dies für ein paar Stunden zu tun, aber für das Leben von mir kann ich es nicht möglich machen.Winform verschiebe ein Bild in eine Picturebox

Was ich versuche, ist einfach verschieben Sie das Bild in einer Bildbox in einer Winform-Anwendung gefunden. Mein Bild ist ungefähr 1000x1000 Pixel und meine Box ist etwas willkürlich wie 400x500, also zum Beispiel, wenn ich die Maus klicke, möchte ich, dass das Bild 50 nach links bewegt wird. Die Bildbox sollte jedoch die gleiche Größe haben.

Für das Leben von mir, kann ich dies jedoch nicht funktionieren. Was ich konnte, ist folgendes:

Diese Funktion ist für meine Kinect Finger Tracking App. Wenn die Anwendung einen einzigen Finder-Punkt auf dem Bildschirm findet, wird das Bild zentriert. Irgendwann würde es mir aber gefallen, wenn sich das Bild mit meiner Fingerbewegung bewegt, die dann kommt, wenn ich den Grundschritt für die Bewegung des Bildes um ein paar Pixel zur Seite ausarbeite.

Jede Hilfe mit diesem würde geschätzt werden.

Antwort

10

Ich habe ein wenig Nachforschungen gemacht und scheinbar ein Bild innerhalb einer PictureBox zu verschieben ist keine leichte Aufgabe, zumindest konnte ich nichts finden, was dies möglich machen würde (nicht zu sagen, dass es keinen Weg gibt es zwar).

Allerdings habe ich ein bisschen eine "Workaround", um zu sehen, ob dies Ihren Bedürfnissen entspricht. Um dies zu erreichen:

  • ein Panel-Steuerelement erstellen und Größe es jedoch viel von dem Bild, das Sie mögen darin
  • Innerhalb dieser Tafel Platz ein PictureBox-Steuerelement mit Ihrem Bild anzuzeigen und stellen Sie die Sizemode Eigenschaft auf AutoSize. Jetzt

, setzen Sie diesen Code in dem Formular

private bool Dragging; 
private int xPos; 
private int yPos; 
private void pictureBox1_MouseUp(object sender, MouseEventArgs e) { Dragging = false; } 
private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { 
    if (e.Button == MouseButtons.Left) { 
     Dragging = true; 
     xPos = e.X; 
     yPos = e.Y; 
    } 
} 
private void pictureBox1_MouseMove(object sender, MouseEventArgs e) { 
    Control c = sender as Control; 
    if (Dragging && c!= null) { 
     c.Top = e.Y + c.Top - yPos; 
     c.Left = e.X + c.Left - xPos; 
    } 
} 

Nun, wenn Sie durch Klicken und Ziehen auf dem PictureBox, wird es nicht tatsächlich das Bild bewegen, in sie, aber das Picture-Steuerelement innerhalb der Platte. Wieder nicht genau das, wonach du gesucht hast und ich bin mir nicht sicher, wie das auf Kinect übergehen würde, aber ich hoffe, das bringt dich auf den richtigen Weg.

Verwandte Themen