2016-07-31 5 views
0

vb.netでゲームを作成しています。ピクチャボックス内のピクチャを別のピクチャボックスに移動しようとしています。しかし、私はそれを働かせることはできません。Vb.net PictureBox内のピクチャを別の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

何が問題なのですか?それはバグアウトですか?画像2は空白のままですか、両方の画像が空白になりますか? – mike100111

+0

何も起こらず、picturebox1には画像があり、picturebox2には画像がありません。 – Grim

答えて

-1

残念ながら、.NETでは「=」だけを使用して画像を比較することはできません。 StackOverflowにはこれに関する多くの答えがあります。あなたが望むことを実行するために使用できるサードパーティライブラリがあります。 ImageComparerが動作するかどうかはわかりませんが、このMicrosoftライブラリのリンクを確認することもできます。小さな画像で作業している場合は、各ピクセルを比較して、画像が一致するかどうかを確認できます。

'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 

そして、あなたのクリックイベントのために:

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 

は、このリンクをチェックアウト:How to make comparison in VB.NET

また、今後の参考のためのキーワードではなく、オブジェクトの平等のための価値の平等をチェックしません「されて」したがって、異なるオブジェクトであるためイメージが同じであっても、falseを返すことになります。 C# IS Keyword

+0

申し訳ありません私はVBで非常に新しいです。私が "AreSameImage(pictureBox1、ChestPlate)Then Then"とタイプしたとき、それからpictureBox1でエラーが発生しました。 "型 'System.Windows.Forms.PictureBox'の値を 'System.Drawing.bitmap'に変換することはできません。 – Grim

+0

申し訳ありません、あなたはpicturebox1.imageが必要です。私は私の答えを修正します – mike100111

+0

ありがとうございました! – Grim

関連する問題