我也在尝试记忆游戏
在这个游戏中,当按下按钮时,按钮和图片框将被发送到列表中
我也想使用图片框内的图像作为一种方式使用此代码。但即使两个图像相同,代码也无法工作。有没有办法检查使用的图像Name.jpg
。
if(buttonCount == 2)
{
if(pictureList[0].Image == pictureList[1].Image)
{
buttonCount = 0;
buttonList.RemoveAt(0)
buttonList.RemoveAt(0);
pictureList.RemoveAt(0);
pictureList.RemoveAt(0);
}
}
答案 0 :(得分:1)
您可以在Tag
中保存图片的ID(例如您建议的文件名)
因此,当将图像加载到图片框中时:
string path = "PATH";
pictureBox.Image = Image.FromFile(path);
pictureBox.Tag = path;
然后你可以比较标签。
但我认为(请告诉我们你如何加载图片)这不能正常工作,因为你从磁盘上加载了两次图像:
pictureBox1.Image = Image.FromFile(path);
pictureBox2.Image = Image.FromFile(path);
因为那时你有不同的实例,所以equals返回false 如果你这样做,它也应该工作:
var image = Image.FromFile(path);
pictureBox1.Image = image;
pictureBox2.Image = image;
答案 1 :(得分:0)
在您当前的应用程序中,您没有足够的信息与图像对象相关联以识别它。因此,您需要扩展Image
类以包含此信息或以其他方式存储它以进行比较。
扩展Image
类
public class GameImage : Image
{
public static GameImage GetImage(string filename)
{
GameImage img = (GameImage)Image.FromFile(filename);
img.FileName = filename;
return img;
}
public string FileName { get; private set; }
}
然后比较变为
if(buttonCount == 2)
{
if(((GameImage)pictureList[0].Image).FileName == ((GameImage)pictureList[1].Image).FileName)
{
buttonCount = 0;
buttonList.RemoveAt(0)
buttonList.RemoveAt(0);
pictureList.RemoveAt(0);
pictureList.RemoveAt(0);
}
}
注意:注意测试!