private void btnProcessar_Click(object sender, EventArgs e) { if (entrada == null) { MessageBox.Show("Nada para processar na entrada!", "Oops...", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } Imagem saida = entrada.Clonar(); // Processar!!! saida.ConverterParaEscalaDeCinza(); int media = saida.CalcularMedia(); saida.LimitarInvertido(media); saida.Erodir(3); //saida.ConverterParaEscalaDeCinzaMedia(); List <Forma> formas = new List <Forma>(); saida.CriarMapaDeFormas(formas); int x = 28; int y = 28; int x1 = 86; int y1 = 86; int x2 = 635; int y2 = 28; int x3 = 693; int y3 = 86; int x4 = 203; int y4 = 326; int x5 = 255; int y5 = 378; Boolean flag = false; int cont = 0, cont2 = 0; for (int j = 0; j < 3; j++) { for (int i = 0; i < formas.Count; i++) { if (formas[i].FazInterseccao(x, y, x1, y1)) { cont++; } } y += 462; y1 += 464; for (int i = 0; i < formas.Count; i++) { if (formas[i].FazInterseccao(x2, y2, x3, y3)) { cont2++; } } y2 += 461; y3 += 464; if (cont == 3 && cont2 == 3) { flag = true; } } if (!flag) { MessageBox.Show("Não é um gabarito!!"); } else { int[,] questoesValidas = new int[10, 5]; int[,] gabarito = new int[10, 5]; cont = 0; cont2 = 0; for (int i = 0; i < 10; i++) { for (int j = 0; j < 5; j++) { for (int z = 0; z < formas.Count; z++) { if (formas[z].FazInterseccao(x4, y4, x5, y5)) { questoesValidas[i, j] = 1; } x4 += 65; x5 += 65; } } x4 = 204; y4 += 64; x5 = 254; y5 += 65; } int cont3 = 0; for (int i = 0; i < 10; i++) { for (int j = 0; j < 5; j++) { cont3++; } } MessageBox.Show(cont.ToString()); } // Exibir saída imgSaida.Image = saida.CriarBitmap(); }
private void btnProcessar_Click(object sender, EventArgs e) { if (entrada == null) { MessageBox.Show("Nada para processar na entrada!", "Oops...", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } Imagem saida = entrada.Clonar(); // Processar!!! saida.ConverterParaEscalaDeCinza(); //saida.ConverterParaEscalaDeCinzaMedia(); saida.LimitarInvertido(saida.CalcularMedia()); saida.Erodir(3); List <Forma> list = new List <Forma>(); saida.CriarMapaDeFormas(list); //Valida gabarito: bool formasGabarito = true; //verifica superior esquerdo: //x28, y28 //x86, y86 formasGabarito = formasGabarito && (ValidaGabarito.ValidarGabarito(list, 28, 28, 86, 86) == 1); //verifica superior direito: //x635, y28 //x693, y86 formasGabarito = formasGabarito && (ValidaGabarito.ValidarGabarito(list, 635, 28, 693, 86) == 1); //verifica centro esquerdo: //x28, y492 //x86, y549 formasGabarito = formasGabarito && (ValidaGabarito.ValidarGabarito(list, 28, 492, 86, 549) == 1); //verifica centro direito: //x 635, y 492 //x 693, y 549 formasGabarito = formasGabarito && (ValidaGabarito.ValidarGabarito(list, 635, 492, 693, 549) == 1); //verifica inferior esquerdo: //x 28, y 955 //x 86, y 1013 formasGabarito = formasGabarito && (ValidaGabarito.ValidarGabarito(list, 28, 955, 86, 1013) == 1); //verifica inferior direito: //x 635, y 955 //x 693, y 1013 formasGabarito = formasGabarito && (ValidaGabarito.ValidarGabarito(list, 635, 955, 693, 1013) == 1); //msg se nao for gabarito: if (formasGabarito == false) { MessageBox.Show("Não é um gabarito!"); } if (formasGabarito) { //Valida alternativas: // x 204, y 327 // x 254, y 377 int x0 = 204, y0 = 327, x1 = 254, y1 = 377; int count = 0; string[] answers = new string[10]; answers[0] = "1 - " + ValidaGabarito.ValidarAlternativa(list, x0, y0, x1, y1); do { answers[count] = count + 1 + " - " + ValidaGabarito.ValidarAlternativa(list, x0, y0, x1, y1); //incrementa y0 e y1 para descer de 1 a 10: y0 += 50 + 14; y1 += 50 + 14; count++; } while (count < 10); string resultado = ""; for (int i = 0; i < answers.Length; i++) { resultado += answers[i] + "\n"; } // Exibir saída imgSaida.Image = saida.CriarBitmap(); MessageBox.Show(resultado); } else { // Exibir saída imgSaida.Image = saida.CriarBitmap(); } }