Arrays 循环通过位图数组

Arrays 循环通过位图数组,arrays,vb.net,bitmap,Arrays,Vb.net,Bitmap,我正在开发一个应用程序,每次按下按钮都会生成随机图像。生成图像后,它循环遍历一组最初为空的位图。它应该做的是用它创建的每个新图像填充数组,同时确保如果数组中已经存在图像,则不要添加它。我已经尝试了很多次,这个方法是唯一一个真正有意义的方法,并且非常接近我试图实现的目标,但是它仍然在我的数组中产生重复 我遗漏了什么?数组怎么可能已经包含您刚刚创建的位图?不可能。即使创建两个包含完全相同数据的位图,它们仍然不是相同的位图。首先,您是如何创建位图的?如果位图包含与已有数据相同的数据,为什么要创建一个呢

我正在开发一个应用程序,每次按下按钮都会生成随机图像。生成图像后,它循环遍历一组最初为空的位图。它应该做的是用它创建的每个新图像填充数组,同时确保如果数组中已经存在图像,则不要添加它。我已经尝试了很多次,这个方法是唯一一个真正有意义的方法,并且非常接近我试图实现的目标,但是它仍然在我的数组中产生重复


我遗漏了什么?

数组怎么可能已经包含您刚刚创建的
位图?不可能。即使创建两个包含完全相同数据的
位图
,它们仍然不是相同的
位图
。首先,您是如何创建
位图的?如果位图包含与已有数据相同的数据,为什么要创建一个呢?位图是一种引用类型。如果您创建一个新位图,它将不等于另一个位图,无论它包含什么。您可以对其进行散列并比较散列(例如,如果位图随后被转换为JPEG图像,则也不能保证)。或者首先确保不生成相同的图像。我将位图中的每个像素设置为颜色数组中基于其索引号的两种颜色中的一种,并随机获取所选颜色的索引号。我循环通过位图上的每个像素,并将其设置为所选颜色。如果位图数组不包含位图,那么我会将该位图放入位图数组。因此,与其检查位图数组是否包含位图,不如将位图与数组中的每个位图进行比较<代码>如果bmpnew是位图(b)
我实际上也这么做了。不,因为那是完全相同的事情。您需要做的是将新
位图中的每个像素与每个现有
位图中的每个像素进行比较,这是不实际的。最好的解决方案是为每个
位图创建一个散列,然后您可以简单地比较散列,这几乎是瞬时的。
Dim bmpNew As Bitmap = Nothing
Dim Bitmaps(15) As Bitmap

For b = 0 To Bitmaps.Count - 1
    If Bitmaps.Contains(bmpNew) Then
    Else
        If Bitmaps(b) Is Nothing Then
            If Bitmaps(b) Is bmpNew Then
            Else
                Bitmaps(b) = bmpNew
            End If
        Else
        End If
    End If
    ListBox1.Items.Add(b)
Next