为什么我不能在这里使用=运算符。无论如何要解决这个问题?
If PictureBox1.Image = My.Resources.pic001 Then
x = 1
Else
x = 0
End If
错误消息是:
没有为类型定义Operator'=' 'System.Drawing.Image'和 'System.Drawing.Bitmap'
答案 0 :(得分:5)
假设PictureBox1.Image引用与My.Resources.pic001相同的Image对象,那么您可以使用:
If Object.ReferenceEquals(PictureBox1.Image, My.Resources.pic001) Then
答案 1 :(得分:1)
正如错误消息所示,没有为您要比较的类型定义运算符'='。即,无法将System.Drawing。图像与System.Drawing进行比较。位图
您需要逐位比较图像或为每个图像创建一个哈希值并进行比较。
这里有一个线程有一个C#示例(它不应该很难转换为VB):
http://www.codeguru.com/forum/showthread.php?t=363130
编辑:可能还有另一个解决方案,我没有尝试过,我不知道是否,并且它可能不会像预期的那样工作但是那里是Equals()
上可用的System.Drawing.Image
方法(Bitmap
来自Image
)。你可能会有一些运气。
答案 2 :(得分:0)
您无法将Image
与Bitmap
进行比较,它们是不同的东西。
答案 3 :(得分:-1)
试试这段代码:
Option Strict On
Option Explicit On
Public Class Form1
Dim pbImage1 As Image = My.Resources.Swamp 'imported from a file called Swamp.jpg
Dim pbimage2 As Image = My.Resources.Dusty 'Imported from a file called Dusty.jpg
Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
PictureBox1.Image = pbImage1
End Sub
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
If PictureBox1.Image Is pbImage1 Then
PictureBox1.Image = pbimage2
Else
PictureBox1.Image = pbImage1
End If
End Sub
End Class