Vb.net 无法在“If”语句中使用=运算符

Vb.net 无法在“If”语句中使用=运算符,vb.net,Vb.net,为什么我不能在这里使用=运算符。怎么解决这个问题 If PictureBox1.Image = My.Resources.pic001 Then x = 1 Else x = 0 End If 错误消息是: 未为类型定义运算符“=” “系统.绘图.图像”和 '系统.绘图.位图' 您无法将图像与位图进行比较,它们是不同的东西。您无法将图像与位图进行比较,它们是不同的东西。假设PictureBox1.Image引用了与My.Resources.pic0

为什么我不能在这里使用=运算符。怎么解决这个问题

 If PictureBox1.Image = My.Resources.pic001 Then
       x = 1
    Else
       x = 0
    End If
错误消息是:

未为类型定义运算符“=” “系统.绘图.图像”和 '系统.绘图.位图'


您无法将图像与位图进行比较,它们是不同的东西。

您无法将图像与位图进行比较,它们是不同的东西。

假设PictureBox1.Image引用了与My.Resources.pic001相同的图像对象,则您可以使用:

If Object.ReferenceEquals(PictureBox1.Image, My.Resources.pic001) Then

假设PictureBox1.Image引用与My.Resources.pic001相同的图像对象,则可以使用:

If Object.ReferenceEquals(PictureBox1.Image, My.Resources.pic001) Then

正如错误消息所说,没有为正在比较的类型定义运算符“=”。i、 e.无法将System.Drawing.Image与System.Drawing.Bitmap进行比较

您需要一点一点地比较图像,或者为每个图像创建一个哈希值并进行比较

这里有一个线程有一个C示例,它应该不难转换为VB:


编辑:可能还有另一个解决方案,我还没有尝试过,我不知道它是否也可能不会像expeted那样工作,但System.Drawing.Image和Bitmap上有一个Equals方法可用。你可能会有一些运气

正如错误消息所说,没有为正在比较的类型定义运算符“=”。i、 e.无法将System.Drawing.Image与System.Drawing.Bitmap进行比较

您需要一点一点地比较图像,或者为每个图像创建一个哈希值并进行比较

这里有一个线程有一个C示例,它应该不难转换为VB:

编辑:可能还有另一个解决方案,我还没有尝试过,我不知道它是否也可能不会像expeted那样工作,但System.Drawing.Image和Bitmap上有一个Equals方法可用。你可能会有一些运气

请尝试以下代码:

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
请尝试以下代码:

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

正如错误消息所说,没有为正在比较的类型定义运算符“=”。i、 e.无法将System.Drawing.**图像**与System.Drawing.**位图**进行比较。为什么要比较两个图像?如果picturebox中的图像是比较后的图像,则我希望x=1,否则x=0。然后,您需要逐个比较。正如Michel在回答中所说,您正在比较的类型不相同。@Tony,因此无法检查是否使用了相同的指定图像?我将把我的注释转换为答案。正如错误消息所说,没有为您正在比较的类型定义运算符“=”。i、 e.无法将System.Drawing.**图像**与System.Drawing.**位图**进行比较。为什么要比较两个图像?如果picturebox中的图像是比较后的图像,则我希望x=1,否则x=0。然后,您需要逐个比较。正如Michel在回答中所说,您正在比较的类型不同。@Tony,因此无法检查是否使用了相同的指定图像?我将把我的评论转换为回答。我只想检查图片框中使用的图像是否为给定图像,位图是否继承自图像,因此,图像引用可能引用位图对象,也可能不引用。我只想检查图片框中使用的图像是给定图像还是位图继承自图像,因此图像引用可能引用位图对象,也可能不引用位图对象。