C# 发出比较两个System.Drawing.Image集合中的项目以查看它们是否匹配的问题
我正在制作一个带有WPF拖放功能的图片益智游戏。上载图像时,图像将被切割成9块,每个位图将添加到System.Drawing.Images的集合(集合1)。我比较的就是这个集合,看看重新排列后的图像是否正确。然后,我将每个位图随机分配到网格上的一个位置,并放入System.Drawing.Images的另一个集合(collection2) 在网格上拖放图像时,我会更改图像在collection2中的位置。 在网格上移动图像后,我检查(验证)图像在每个集合中的位置(索引)是否匹配。如果是这样,图片已重新排列。希望我能正确地解释这一点 我的问题是,该方法总是返回false,即使图像已被安排完成图像 如果我需要提供更多的代码或更好的解释,请让我知道。我想把这件事说清楚,但我的脑袋被炸了C# 发出比较两个System.Drawing.Image集合中的项目以查看它们是否匹配的问题,c#,wpf,image,observablecollection,C#,Wpf,Image,Observablecollection,我正在制作一个带有WPF拖放功能的图片益智游戏。上载图像时,图像将被切割成9块,每个位图将添加到System.Drawing.Images的集合(集合1)。我比较的就是这个集合,看看重新排列后的图像是否正确。然后,我将每个位图随机分配到网格上的一个位置,并放入System.Drawing.Images的另一个集合(collection2) 在网格上拖放图像时,我会更改图像在collection2中的位置。 在网格上移动图像后,我检查(验证)图像在每个集合中的位置(索引)是否匹配。如果是这样,图片
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;