Как выйти из цикла при проверки пикселей картинки? - 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;
}
}
}