Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检查两个按钮是否具有相同的背景图像_C# - Fatal编程技术网

C# 检查两个按钮是否具有相同的背景图像

C# 检查两个按钮是否具有相同的背景图像,c#,C#,C#-Windows窗体应用程序 我有一些按钮背景图像的问题。 我想检查两个按钮是否具有相同的背景图像,我尝试以下操作: if (button1.BackgroundImage == button2.BackgroundImage) MessageBox.Show("works!"); 但它不起作用 如何检查两个按钮的背景图像是否相同?试试这个 那就试试这个 这似乎是从UI的状态驱动业务逻辑。这可能是一个相当糟糕的方法。在一个结构合理的应用程序中,应用程序模型的状态将为

C#-Windows窗体应用程序 我有一些按钮背景图像的问题。 我想检查两个按钮是否具有相同的背景图像,我尝试以下操作:

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");
            }
        }