Пример #1
0
        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();
        }
Пример #2
0
        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();
            }
        }