Captcha simples em C#

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (0)  (0)

Nesse artigo, vou mostrar um exemplo simples para montar uma captcha, usando o c#

1 - Crie um projeto em c# com o nome que desejar, na tela principal insira os componentes abaixo:

________________________________________
|Componente | Nome      | Texto          |
----------------------------------------
|TextBox    | txtInformacao  |           |
|Button     | btValidar      | Validar   |
|PuctureBox | pbImagem       |           | 
|Form1      | FrmPrincipal   | Captcha   |
----------------------------------------

Exp:

2 - Agora, no código fonte do aplicativo, logo acima do construtor do form insira o seguinte código abaixo :

   string validaImagem = string.Empty;

   const string sLetra = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
   readonly string[] sFont = new string[] { "Courier New", "Impact", "Times New Roman", "Verdana", "Arial" };
   readonly Color[] cCor = new Color[]{Color.Aqua, Color.Black, Color.Blue, Color.Fuchsia, Color.Gray,
                                            Color.Green, Color.Lime, Color.Maroon, Color.Navy, Color.Olive,
                                            Color.Purple, Color.Red, Color.Silver, Color.Teal, Color.Yellow};

3 - Agora logo abaixo do construtor do form, Insira o método abaixo:


private string CriaImagem(PictureBox Imagem)
        {
            int posicaoX = 0, posicaoY = 0;
            string valorImagem = string.Empty;

            pbImagem.Width = 160;
            pbImagem.Height = 60;

           
            for (int i = 0; i < 3; i++)
            {
                Random random = new Random();
                int index = random.Next(9 * i, sLetra.Length -1);
            
                valorImagem = valorImagem + sLetra[index + 1].ToString();
            }

            Imagem.Width = pbImagem.Width;
            Imagem.Height = pbImagem.Height;
            Imagem.BackColor = Color.Beige;
            Imagem.Dock = DockStyle.None;
            this.Update();
            Graphics grpImagem = Imagem.CreateGraphics();

             for (int i = 0; i < 3; i++) {
                Random random = new Random();
                int iTamFont = random.Next(15, 25);
                int iFont = random.Next(i ,5);
                int iCor = random.Next(i, 15);
                posicaoX = (i *40);
                posicaoY = i * 2;
                
                grpImagem.DrawString(valorImagem[i].ToString(), new Font(sFont[iFont], iTamFont), 
                 new SolidBrush(cCor[iCor]), new PointF(posicaoX, posicaoY));
             }
             for (int i = 0; i < 2; i++)
             {
                 Random random = new Random();
                 int iCor = random.Next(i, 15);
                 posicaoX = random.Next(posicaoX, 160);
                 posicaoY = random.Next(posicaoY, 60);
                 grpImagem.DrawRectangle(new Pen(new SolidBrush(cCor[iCor])), posicaoY, posicaoY, posicaoX, posicaoY);
                 grpImagem.DrawRectangle(new Pen(new SolidBrush(cCor[iCor + 1])), 0, 20, posicaoX, posicaoY);
             }

             return valorImagem;
          }

4 - Feito isso no Evento Click do btValidar, insira o seguinte código :

    if (txtInformacao.Text == validaImagem)
    {
       MessageBox.Show("Parabéns, muito bem!","Sucesso");
    } else{
       MessageBox.Show("Ops! Você errou.", "Não deu!");
    }

5 - Agora no evento Shown do FrmPrincipal Insira o seguinte código, para a criação da imagem :

  validaImagem = CriaImagem(pbImagem);

6 - Feito isso o projeto esta pronto para uso conforme abaixo:



Com isso finalizo este artigo, abraço a todos.
 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?