如何将变量与 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
这就是完整的代码
Image
是 System.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,因为您发布的代码在执行此操作时无法编译,因此会向您指出错误。
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
这就是完整的代码
Image
是 System.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,因为您发布的代码在执行此操作时无法编译,因此会向您指出错误。