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

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

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

Основной код:
        private void main()
        {
            string odnakr = null;
 
            try
            {
                re:
                lock (spisok)
                {
                    if (spisok.Count == 0)
                    {
                        BeginInvoke(new Action(() => MessageBox.Show("ГОТОВО!", "СООБЩЕНИЕ", MessageBoxButtons.OK, MessageBoxIcon.Information)));
                        return;
                    }
                    else
                    {
                        odnakr = spisok.First();
                        schetchik--;
                        spisok.Remove(odnakr);
                    }
                }

                Bitmap image = new Bitmap(odnakr); //Bitmap для открываемого изображения
               
                this.pictureBox1.Size = image.Size;
                pictureBox1.Image = image;
                pictureBox1.Invalidate();
 
                int x, y;
 
                for (x = 0; x < image.Width; x++)
                {
                    for (y = 0; y < image.Height; y++)
                    {
                        Color c = image.GetPixel(x, y);
                        label3.Text = odnakr;
                        if (c == Color.FromArgb(239, 65, 54))
                        {
                            image.Dispose();
                            File.Delete(odnakr);
                            goto re;
                        }
                    }
                }
                
            }
 
            catch (Exception e)
            {
                BeginInvoke(new Action(() => MessageBox.Show(e.Message, "СООБЩЕНИЕ", MessageBoxButtons.OK, MessageBoxIcon.Information)));
            }
 
        }
В папке несколько картинок. Берём первую, ищем нужный цвет, при обнаружении картинку удаляем. Если прошли картинку, а нужный цвет не нашли, софт останавливается. Как сделать, что бы брал следующую картинку? Пробовал флаг вешать, через отрицание того что ищем - не помогает.

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

textual
Листинг программы
        private void Form1_Load(object sender, EventArgs e)
        {
            MySuperUberMethod(@"C:\!WORK\JPG");
        }
 
        private void MySuperUberMethod(string dir)
        {
            if (!Directory.Exists(dir))
                return;
 
            IEnumerable<string> files = Directory.EnumerateFiles(dir, "*.png");
 
            foreach (string file in files)
            {
                Bitmap bmp = new Bitmap(file);
 
                bool handled = false;
 
                for (int x = 0; x < bmp.Width; x++)
                {
                    for (int y = 0; y < bmp.Height; y++)
                    {
                        if (bmp.GetPixel(x, y) == Color.FromArgb(255, 31, 0))
                        {
                            MessageBox.Show(file);
                            handled = true;
                            break;
                        }
                    }
 
                    if (handled)
                        break;
                }
            }
        }

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


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

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

13   голосов , оценка 4.231 из 5
Похожие ответы