C# 检查两个按钮是否具有相同的背景图像
C#-Windows窗体应用程序 我有一些按钮背景图像的问题。 我想检查两个按钮是否具有相同的背景图像,我尝试以下操作:C# 检查两个按钮是否具有相同的背景图像,c#,C#,C#-Windows窗体应用程序 我有一些按钮背景图像的问题。 我想检查两个按钮是否具有相同的背景图像,我尝试以下操作: if (button1.BackgroundImage == button2.BackgroundImage) MessageBox.Show("works!"); 但它不起作用 如何检查两个按钮的背景图像是否相同?试试这个 那就试试这个 这似乎是从UI的状态驱动业务逻辑。这可能是一个相当糟糕的方法。在一个结构合理的应用程序中,应用程序模型的状态将为
if (button1.BackgroundImage == button2.BackgroundImage)
MessageBox.Show("works!");
但它不起作用
如何检查两个按钮的背景图像是否相同?试试这个
那就试试这个
这似乎是从UI的状态驱动业务逻辑。这可能是一个相当糟糕的方法。在一个结构合理的应用程序中,应用程序模型的状态将为您提供答案,而无需返回UI。。。你到底想实现什么?我想制作一个匹配的游戏。@Marius98将BackgroundImage替换为ImageSo创建一个独立于UI的游戏模型。创建一个将标识符(可能是一个整数)映射到图像的查找(一个字典甚至一个数组),并用这些标识符对填充您的模型(可能是一个2d数组,如果我正确理解您的游戏的话)。提供一种确定模型中的两个位置是否匹配的方法。现在,考虑一下用户界面。您可以将其传递给您的游戏模型和图像地图。使用此选项呈现UI。当需要匹配图像时,请返回模型并询问是否匹配。不要将您的状态存储为UI。我正考虑这样做,也许这将是我问题的解决方案,谢谢您的回答!:-)我试着这样做,但如果我把每个按钮的不同图像的结果是相同的。。。不要使用GetPixel进行完整图像比较。
if(button1.Image == button2.Image)
{
MessageBox.Show("Works");
}
private bool ImageCompareArray(Bitmap firstImage, Bitmap secondImage)
{
bool flag = true;
string firstPixel;
string secondPixel;
if (firstImage.Width == secondImage.Width
&& firstImage.Height == secondImage.Height)
{
for (int i = 0; i<firstImage.Width; i++)
{
for (int j = 0; j<firstImage.Height; j++)
{
firstPixel = firstImage.GetPixel(i, j).ToString();
secondPixel = secondImage.GetPixel(i, j).ToString();
if (firstPixel != secondPixel)
{
flag = false;
break;
}
}
}
if (flag == false)
{
return false;
}
else
{
return true;
}
}
else
{
return false;
}
}
private void Form2_Load(object sender, EventArgs e)
{
if(ImageCompareArray((Bitmap)button1.BackgroundImage, (Bitmap)button2.BackgroundImage))
{
MessageBox.Show("Yes");
}
else
{
MessageBox.Show("No");
}
}