C# 发出比较两个System.Drawing.Image集合中的项目以查看它们是否匹配的问题

C# 发出比较两个System.Drawing.Image集合中的项目以查看它们是否匹配的问题,c#,wpf,image,observablecollection,C#,Wpf,Image,Observablecollection,我正在制作一个带有WPF拖放功能的图片益智游戏。上载图像时,图像将被切割成9块,每个位图将添加到System.Drawing.Images的集合(集合1)。我比较的就是这个集合,看看重新排列后的图像是否正确。然后,我将每个位图随机分配到网格上的一个位置,并放入System.Drawing.Images的另一个集合(collection2) 在网格上拖放图像时,我会更改图像在collection2中的位置。 在网格上移动图像后,我检查(验证)图像在每个集合中的位置(索引)是否匹配。如果是这样,图片

我正在制作一个带有WPF拖放功能的图片益智游戏。上载图像时,图像将被切割成9块,每个位图将添加到System.Drawing.Images的集合(集合1)。我比较的就是这个集合,看看重新排列后的图像是否正确。然后,我将每个位图随机分配到网格上的一个位置,并放入System.Drawing.Images的另一个集合(collection2)

在网格上拖放图像时,我会更改图像在collection2中的位置。 在网格上移动图像后,我检查(验证)图像在每个集合中的位置(索引)是否匹配。如果是这样,图片已重新排列。希望我能正确地解释这一点

我的问题是,该方法总是返回false,即使图像已被安排完成图像

如果我需要提供更多的代码或更好的解释,请让我知道。我想把这件事说清楚,但我的脑袋被炸了

    public bool Validate(ObservableCollection<System.Drawing.Image> itemPlacement)
    {
        ObservableCollection<System.Drawing.Image> placement = itemPlacement;

        foreach (System.Drawing.Image item in placement)
        {
            if ((placement.IndexOf(item) != puzzlePiece.IndexOf(item) || placement.IndexOf(item) < 0))
            {
                return false;
            }
        }

        return true;
    }
public bool验证(ObservableCollection itemPlacement)
{
ObservableCollection placement=itemPlacement;
foreach(放置中的System.Drawing.Image项)
{
if((placement.IndexOf(item)!=puzzlePiece.IndexOf(item)| | placement.IndexOf(item)<0))
{
返回false;
}
}
返回true;
}

据我所知,您有一个集合以特定顺序存储一组已知图像,还有另一个集合(与第一个集合中的图像相同),表示用户放置图像的顺序,您需要确定这些顺序是否匹配。如果他们这样做了,用户就成功地解决了这个难题

嗯。。。非常简单-创建一个带有索引的类,并将其进行比较

public class PuzzlePiece
{
  public int Index { get; set; }
  public Image Piece { get; set; }
}

for(int i = 0; i < puzzlePieces.Count; i++)
{
  if(puzzlePieces[i].Index != playerPieces[i].Index) return false;
}
return true;

你能在用新索引更新collection2的地方发布代码吗?
if(puzzlePieces[i].CompareTo(playerPieces[i]) != 0) return false;