Как выйти из цикла при проверки пикселей картинки? - C#

Узнай цену своей работы

Формулировка задачи:

Основной код:
Листинг программы
  1. private void main()
  2. {
  3. string odnakr = null;
  4. try
  5. {
  6. re:
  7. lock (spisok)
  8. {
  9. if (spisok.Count == 0)
  10. {
  11. BeginInvoke(new Action(() => MessageBox.Show("ГОТОВО!", "СООБЩЕНИЕ", MessageBoxButtons.OK, MessageBoxIcon.Information)));
  12. return;
  13. }
  14. else
  15. {
  16. odnakr = spisok.First();
  17. schetchik--;
  18. spisok.Remove(odnakr);
  19. }
  20. }
  21.  
  22. Bitmap image = new Bitmap(odnakr); //Bitmap для открываемого изображения
  23. this.pictureBox1.Size = image.Size;
  24. pictureBox1.Image = image;
  25. pictureBox1.Invalidate();
  26. int x, y;
  27. for (x = 0; x < image.Width; x++)
  28. {
  29. for (y = 0; y < image.Height; y++)
  30. {
  31. Color c = image.GetPixel(x, y);
  32. label3.Text = odnakr;
  33. if (c == Color.FromArgb(239, 65, 54))
  34. {
  35. image.Dispose();
  36. File.Delete(odnakr);
  37. goto re;
  38. }
  39. }
  40. }
  41. }
  42. catch (Exception e)
  43. {
  44. BeginInvoke(new Action(() => MessageBox.Show(e.Message, "СООБЩЕНИЕ", MessageBoxButtons.OK, MessageBoxIcon.Information)));
  45. }
  46. }
В папке несколько картинок. Берём первую, ищем нужный цвет, при обнаружении картинку удаляем. Если прошли картинку, а нужный цвет не нашли, софт останавливается. Как сделать, что бы брал следующую картинку? Пробовал флаг вешать, через отрицание того что ищем - не помогает.

Решение задачи: «Как выйти из цикла при проверки пикселей картинки?»

textual
Листинг программы
  1.         private void Form1_Load(object sender, EventArgs e)
  2.         {
  3.             MySuperUberMethod(@"C:\!WORK\JPG");
  4.         }
  5.  
  6.         private void MySuperUberMethod(string dir)
  7.         {
  8.             if (!Directory.Exists(dir))
  9.                 return;
  10.  
  11.             IEnumerable<string> files = Directory.EnumerateFiles(dir, "*.png");
  12.  
  13.             foreach (string file in files)
  14.             {
  15.                 Bitmap bmp = new Bitmap(file);
  16.  
  17.                 bool handled = false;
  18.  
  19.                 for (int x = 0; x < bmp.Width; x++)
  20.                 {
  21.                     for (int y = 0; y < bmp.Height; y++)
  22.                     {
  23.                         if (bmp.GetPixel(x, y) == Color.FromArgb(255, 31, 0))
  24.                         {
  25.                             MessageBox.Show(file);
  26.                             handled = true;
  27.                             break;
  28.                         }
  29.                     }
  30.  
  31.                     if (handled)
  32.                         break;
  33.                 }
  34.             }
  35.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.231 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы