c# 比较两个picturebox 显示的图片是否相同

我有两个picturebox容器,它们的中的图片都是:pb11.Image=imageList1.Images[2];pb12.Image=imageList1.Imag... 我有两个picturebox容器,它们的中的图片都是:
pb11.Image = imageList1.Images[2];
pb12.Image = imageList1.Images[2];
然后有个比较:
if (pb11.Image ==pb12.Image )
{
MessageBox.Show("相等");
return;
}
可是程序运行时却根本没有进入IF语句执行,这是为什么呢?
展开
 我来答
定复2d
2009-04-04 · TA获得超过3196个赞
知道大有可为答主
回答量:2052
采纳率:0%
帮助的人:1936万
展开全部
List<string> list1 = new List<string>();
List<string> list2 = new List<string>();
if (list1 == list2)
Console.WriteLine(true);
else
Console.WriteLine(false);

参看这个例子
输出是false

你那样比较两个对象,似乎不行吧

我重新写了一个,利用内存流
你可以参考

private bool Same(Image image1, Image image2)
{
MemoryStream ms1 = new MemoryStream();
MemoryStream ms2 = new MemoryStream();

image1.Save(ms1, System.Drawing.Imaging.ImageFormat.Bmp);
image2.Save(ms2, System.Drawing.Imaging.ImageFormat.Bmp);
byte[] im1 = ms1.GetBuffer();
byte[] im2 = ms2.GetBuffer();
if (im1.Length != im2.Length)
return false;
else
{
for (int i = 0; i < im1.Length; i++)
if (im1[i] != im2[i])
return false;
}
return true;
}

调用

private void button2_Click(object sender, EventArgs e)
{
if (Same(pictureBox1.Image, pictureBox2.Image))
MessageBox.Show("true");
else
MessageBox.Show("false");
}
非我即仙
2009-04-04 · TA获得超过568个赞
知道小有建树答主
回答量:303
采纳率:0%
帮助的人:401万
展开全部
对于引用类型变量来说,==比较只是比较引用对象是否相同。
就比如string类型,如果你在Java中写:
String s1="Sample";
String s2="Sample";
if(s1==s2)
{
System.out.println("s1=s2");
}
结果是没有输出s1=s2。因为此时只是比较引用的实例String是否相同。s1,s2是两个不同的实例,比较s1==s2会返回false。
如果要进行引用类的有意义的实际比较,你必须重写某个类的Equals()方法或者重载==运算符。
不知道.NET是否有提供Image的实际Equals比较,估计是没有的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zc20081989
2009-04-04 · 超过26用户采纳过TA的回答
知道答主
回答量:92
采纳率:0%
帮助的人:94.7万
展开全部
string.compare(pb11.image,pb12.image)比较
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hundredpig
2009-04-04 · TA获得超过698个赞
知道小有建树答主
回答量:656
采纳率:0%
帮助的人:365万
展开全部
你这样比较肯定不行的,==在c#里被重写了,效果就是java里的Equals()。这个Equals只看对象引用是否相同。

所以你需要重写c#的Equals();
public override bool Equals(object o)
{
//这里写比较2个对象是否具体相等。
}

但是,如何比较2个图像相等?没见过。。。
这里给你个思路吧,把2个图像都读入文件流,转成2进制数组,再比较。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式