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

时间:2011-01-19 08:41:42

标签: vb.net

为什么我不能在这里使用=运算符。无论如何要解决这个问题?

 If PictureBox1.Image = My.Resources.pic001 Then
       x = 1
    Else
       x = 0
    End If

错误消息是:

  

没有为类型定义Operator'='   'System.Drawing.Image'和   'System.Drawing.Bitmap'

4 个答案:

答案 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)

您无法将ImageBitmap进行比较,它们是不同的东西。

答案 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