无法在“If”语句中使用=运算符
问题描述:
为什么我不能在此处使用=运算符。无论如何要解决这个问题?无法在“If”语句中使用=运算符
If PictureBox1.Image = My.Resources.pic001 Then
x = 1
Else
x = 0
End If
的错误信息是:
操作 '=' 不为类型 '为System.Drawing.Image' 和 'System.Drawing.Bitmap'
答
假设PictureBox1.Image引用相同的图像对象作为My.Resources.pic001,然后可以使用:
If Object.ReferenceEquals(PictureBox1.Image, My.Resources.pic001) Then
答
定义
你不能比较Image
s到Bitmap
s,它们是不同的东西。
答
作为错误消息指出,操作者“=”未对该类型定义你在比较。即不可能比较System.Drawing。 图片到System.Drawing。 位图
您需要逐位比较图像或为每个图像创建一个哈希值并进行比较。
有具有C#示例(它不应该是很难转换为VB)这里螺纹:
http://www.codeguru.com/forum/showthread.php?t=363130
编辑:有可能是另一种解决办法,我没有尝试了它,我不知道是否可能不会像那样工作,但是有Equals()
方法可用于System.Drawing.Image
(并且Bitmap
源自Image
)。你可能会有一些运气。
答
试试这个代码:
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
随着错误消息称,运营商“=”是不是因为你是比较类型定义。即无法将System.Drawing。**图像**与System.Drawing。**位图进行比较** 为什么要比较两张图像? – Tony 2011-01-19 08:43:30
如果picturebox中的图像是比较图像,那么我想x = 1 else x = 0. – subanki 2011-01-19 08:44:37
然后你需要比较like for like。正如米歇尔在他的回答中所说的,你比较的类型是不一样的。 – Tony 2011-01-19 08:46:02