2014-02-03 2 views
0

мне нужно проверить, если кнопка не имеют изображения (BackColor изменяется на зеленый) или изображение называется Atorre (BackColor изменяется на красный), Heres мой код:Проверьте изображение кнопки

public static bool IsEnemyOrEmptyA(Button check) 
{ 
    var Atorre = teste.Properties.Resources.Atorre; 
    bool res; 
    if (check == null || check.Image == null) 
    { 
     res = true; 
     check.BackColor = Color.Green; 
     return res; 
    } 
    else if (check.Image == teste.Properties.Resources.Atorre) 
    { 
     res = true; 
     check.BackColor = Color.Red; 
     return res; 
    } 
    else 
    { 
     res = false; 
     return res; 
    } 
} 

но даже если сво другое изображение, кнопка отображает красный цвет назад или ничего. Любые предложения?

+0

Я думаю, вам, возможно, понадобится добавить еще один код для этого вопроса, чтобы иметь смысл. – shenku

+0

возможно использовать '.Equals()' вместо '==' – SSpoke

+0

.Equals() также не работает. – user3267841

ответ

0

Это единственный способ сравнить изображения, вы не должны сравнивать изображения, а вместо этого сравнивать некоторые переменные.

private void button1_Click(object sender, EventArgs e) 
    { 
     var Atorre = Resource1.test; 
     var DifferentImage = Resource1.test2; 
     byte[] a = BitmapToBytes(Atorre); 
     byte[] b = BitmapToBytes(DifferentImage); 

     bool isEqual = true; 

     if (a.Length == b.Length && a != null && b != null) 
     { 
      for (int i = 0; i < b.Length; i++) //compare every byte 
      { 
       if (b[i] != a[i]) 
       { 
        isEqual = false; 
        break; 
       } 
      } 
     } 
     else 
     { 
      isEqual = false; 
     } 

     if(isEqual) 
      MessageBox.Show("It's EQUAL"); 
     else 
      MessageBox.Show("Not EQUAL"); 

    } 


    //Convert Image to Bytes 
    public static byte[] BitmapToBytes(Bitmap Bitmap) 
    { 
     System.IO.MemoryStream ms = null; 
     try 
     { 
      ms = new System.IO.MemoryStream(); 
      Bitmap.Save(ms, Bitmap.RawFormat); 
      byte[] byteImage = new Byte[ms.Length]; 
      byteImage = ms.ToArray(); 
      return byteImage; 
     } 
     catch (ArgumentNullException ex) 
     { 
      throw ex; 
     } 
     finally 
     { 
      ms.Close(); 
     } 
    } 
+0

Это сработало, спасибо: D – user3267841

+0

не проблема, но вы должны использовать переменные таким образом, будет медленным, если у вас много картин. – SSpoke

Смежные вопросы