如何将变量与 PictureBox 图像进行比较

How to Compare Variable to PictureBox Image

    If PictureBox1.Image = "a.png" Then
        PictureBox1.Image = My.Resources.b
    Else
        PictureBox1.Image = My.Resources.a
    End If

不行。我如何使这个东西工作?它应该检查图片框是否显示图片 a ,如果是则显示图片 b.

Public Class Form1
    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick 
        If PictureBox1.Image Is My.Resources.b Then
            PictureBox1.Image = My.Resources.a
            PictureBox1.Refresh()
        Else
            PictureBox1.Image = My.Resources.b
            PictureBox1.Refresh()
        End If
    End Sub
End Class

这就是完整的代码

ImageSystem.Drawing.Image 类型的 属性 而 "a.png" 是一个字符串,所以你不能比较这些东西看它们是否相等。

另外Image是一个引用类型,所以你必须使用Is将它与另一个引用类型进行比较。

以下可能有效:

If PictureBox1.Image Is My.Resources.a Then
    PictureBox1.Image = My.Resources.b
Else
    PictureBox1.Image = My.Resources.a
End If

注意:比较图像可能会很棘手,因为当您设置图像 属性 时,它实际上可能会创建原始图像的副本,因此稍后的比较不起作用。参见 How to compare Image objects with C# .NET?

因此,考虑到这一点,最好使用变量来比较状态,因为这消耗的资源更少,而且比必须比较图像要简单得多。

像下面这样的东西应该适合你:

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    Static showImageA As Boolean
    showImageA = Not showImageA

    If showImageA Then
        PictureBox1.Image = My.Resources.a
    Else
        PictureBox1.Image = My.Resources.b
    End If
End Sub

注意:确保您有 Option Strict 和 Option Explicit On,因为您发布的代码在执行此操作时无法编译,因此会向您指出错误。