繁体   English   中英

我们如何在VB.net的图片框中显示上一张图片?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM