[英]How do we show the previous image in a picturebox in VB.net?
我将图像存储在数组中,之后,添加了一个if语句来检查当前显示的图像,这是到目前为止的代码,但没有结果。
Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click
Dim img(3) As Image
img(0) = My.Resources.bugs
img(1) = My.Resources.discuss
img(2) = My.Resources.flower
img(3) = My.Resources.mask
If PictureBox1.Image Is img(0) Then
PictureBox1.Image = img(3)
End If
End Sub
您的代码存在严重问题。 您不应该My.Resources
遍地访问My.Resources
的相同属性。 那是因为它每次都提取数据并创建一个新对象,因此,每当用户单击那个Button
时,您将创建四个新的Image
对象。 您应该提取资源并仅填充一次阵列。
这就是您的If
语句不起作用的原因。 即使它们是从相同的资源创建的, PictureBox
当前的Image
对象也与数组中的对象不同。
您应该将当前图像的索引存储在一个字段中,然后,每次要转到下一张图像时,只需增加该字段并获得该索引处的Image
。 您可以使用Mod
来包装在数组的末尾。
Private images As Image() = {My.Resources.bugs,
My.Resources.discuss,
My.Resources.flower,
My.Resources.mask}
Private imageIndex As Integer = 0
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
PictureBox1.Image = images(imageIndex)
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
imageIndex = (imageIndex + 1) Mod images.Length
PictureBox1.Image = images(imageIndex)
End Sub
我想念你说的是“上一个”而不是“下一个”。 这将适用于:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
imageIndex -= 1
If imageIndex < 0 Then
imageIndex = images.GetUpperBound(0)
End If
PictureBox1.Image = images(imageIndex)
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.