こちらで質問するのは初めてなので、よろしくお願いします。
これは、Visual Basic 2010 で作成している小さなゲーム用です。クリックすると暗くなる画像があります。後で元の画像と同じようにコードで認識されるようにする必要があります。
画像を暗くするコードは次のとおりです。
Sub WaterDarken(ByVal picTarget As PictureBox)
Dim pic As New Bitmap(picTarget.Image)
Dim intRed As Integer
Dim intGreen As Integer
Dim intBlue As Integer
For x As Integer = 0 To picTarget.Image.Width - 1
For y As Integer = 0 To picTarget.Image.Height - 1
Dim intDarkenedColor As Color = pic.GetPixel(x, y)
If intDarkenedColor.R - 50 <= 255 And intDarkenedColor.R - 50 >= 0 Then
intRed = intDarkenedColor.R - 50
Else
intRed = 0
End If
If intDarkenedColor.G - 50 <= 255 And intDarkenedColor.G - 50 >= 0 Then
intGreen = intDarkenedColor.G - 50
Else
intGreen = 0
End If
If intDarkenedColor.B - 50 <= 255 And intDarkenedColor.B - 50 >= 0 Then
intBlue = intDarkenedColor.B - 50
Else
intBlue = 0
End If
intDarkenedColor = Color.FromArgb(225, intRed, intGreen, intBlue)
pic.SetPixel(x, y, intDarkenedColor)
Next
Next
picTarget.Image = pic
End Sub
元の画像と暗くした画像を比較するコードは次のとおりです。
Function IsDarkened(ByRef source As Image, ByRef darkenedSource As Image) As Boolean
Dim pic As New Bitmap(source)
Dim pic2 As New Bitmap(darkenedSource)
Dim intRed As Integer
Dim intGreen As Integer
Dim intBlue As Integer
For x As Integer = 0 To pic.Width - 1
For y As Integer = 0 To pic.Height - 1
Dim darkened As Color = pic.GetPixel(x, y)
If darkened.R - 50 <= 255 And darkened.R - 50 >= 0 Then
intRed = darkened.R - 50
Else
intRed = 0
End If
If darkened.G - 50 <= 255 And darkened.G - 50 >= 0 Then
intGreen = darkened.R - 50
Else
intGreen = 0
End If
If darkened.B - 50 <= 255 And darkened.B - 50 >= 0 Then
intBlue = darkened.B - 50
Else
intBlue = 0
End If
darkened = Color.FromArgb(255, intRed, intGreen, intBlue)
pic.SetPixel(x, y, darkened)
Next
Next
For x = 0 To pic.Width - 1
For y = 0 To pic.Height - 1
If pic.GetPixel(x, y) <> pic2.GetPixel(x, y) Then
Return False
End If
Next
Next
Return True
End Function
ただし、何かが機能しておらず、画像が同じように認識されていません。これはしばらくの間私を悩ませてきました。どなたかお手伝いいただける方がいらっしゃいましたら、よろしくお願いします!ありがとう。