2016-07-31 13 views
0

Ich mache ein Spiel in vb.net und versuche ein Bild in einer Bildbox in eine andere Bildbox zu verschieben. Aber ich kann es nicht zur Arbeit bringen.Vb.net Verschiebe ein Bild in einer PictureBox in eine andere PictureBox

Dim ChestPlate As Image = My.Resources.ChestPlate 

Private Sub pictureBox1_Click(sender As Object, e As EventArgs) Handles pictureBox1.Click 

    If pictureBox1.Image Is ChestPlate Then 

     pictureBox2.Image = ChestPlate 

     pic1tureBox1.Image = Nothing 
    End If 
End Sub 
+0

Was funktioniert nicht? Fällt es aus? Bleibt Bild zwei nur leer oder gehen beide Bilder leer? – mike100111

+0

Nichts passiert, Bildbox1 hat das Bild und Bildbox2 hat kein Bild. – Grim

Antwort

-1

Leider können Sie Bilder nicht vergleichen, indem Sie einfach "=" in .NET verwenden. Dazu gibt es viele Antworten auf StackOveflow. Es gibt Bibliotheken von Drittanbietern, die Sie verwenden können, um zu tun, was Sie wollen. Sie können diesen Microsoft Bibliothekslink auch auschecken, obwohl ich nicht weiß, ob es funktioniert ImageComparer. Wenn Sie mit kleinen Bildern arbeiten, können Sie jedes Pixel vergleichen, um zu sehen, ob die Bilder übereinstimmen.

'checks if two images are the same by comparing each pixel. not very fast for large images. 
Private Function AreSameImage(ByVal bitmap1 As Bitmap, ByVal bitmap2 As Bitmap) As Boolean 

    For X = 0 To bitmap1.Width - 1 
     For y = 0 To bitmap2.Height - 1 
      If bitmap1.GetPixel(X, y) <> bitmap2.GetPixel(X, y) Then 
       Return False 
      End If 
     Next 
    Next 

'If every pixel matched, return true 
    Return True 
End Function 

Und dann für Ihr Click-Ereignis:

Dim ChestPlate As Image = My.Resources.ChestPlate 

Private Sub pictureBox1_Click(sender As Object, e As EventArgs) Handles pictureBox1.Click 

If AreSameImage(picturebox1.image ,Chestplate) Then 

    pictureBox2.Image = ChestPlate 

    pic1tureBox1.Image = Nothing 
End If 
End Sub 

prüfen Sie diesen Link aus: How to make comparison in VB.NET

Auch für zukünftige Referenz des „ist“ Schlüsselwort sucht nicht nach Wertgleichheit eher für Objektgleichheit Auch wenn die Bilder die gleichen sind, da sie unterschiedliche Objekte sind, wird False zurückgegeben. C# IS Keyword

+0

Entschuldigung, ich bin sehr neu bei vb. Wenn ich "Wenn AreSameImage (PictureBox1, ChestPlate) Then" getippt habe, dann war es ein Fehler mit PictureBox1. "Der Wert des Typs 'System.Windows.Forms.PictureBox' kann nicht in 'System.Drawing.bitmap" konvertiert werden. – Grim

+0

Entschuldigung, Sie brauchen picturebox1.image. Ich werde meine Antwort korrigieren – mike100111

+0

Vielen Dank! – Grim

Verwandte Themen