How to Create Captcha Code In Visual Studio
Preview
Hello friends, in this post I will discuss about how to create a captcha code in a form using Visual Studio 2010 (VB.Net).
Captcha is a challenge-response test used in computing to ensure answers are not produced by computers. First open Visual Studio and create a new project, then create a form with the design as shown below
NOTES :
Components in Form:
After that, go into the code and import some of the required libraries:Components in Form:
- PictureBox
- TextBox
- Button
- Label
Imports System.Text
Imports System.Drawing
Imports System.Windows.Forms
Imports System.Drawing.Drawing2D
Public Class Form1
End Class
When done, declare some global variables as needed
Public Class Form1
Dim DrawingFont As New Font("Arial", 25)
Dim CaptchaImage As New Bitmap(140, 40)
Dim CaptchaGraf As Graphics = Graphics.FromImage(CaptchaImage)
Dim Alphabet As String = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz"
Dim CaptchaString, TickRandom As String
Dim ProcessNumber As Integer
End Class
Then, create a function for the captcha code generation process
Private Sub GenerateCaptcha()
ProcessNumber = My.Computer.Clock.LocalTime.Millisecond
If ProcessNumber < 521 Then
ProcessNumber = ProcessNumber \ 10
CaptchaString = Alphabet.Substring(ProcessNumber, 1)
Else
CaptchaString = CStr(My.Computer.Clock.LocalTime.Second \ 6)
End If
ProcessNumber = My.Computer.Clock.LocalTime.Second
If ProcessNumber < 30 Then
ProcessNumber = Math.Abs(ProcessNumber - 8)
CaptchaString += Alphabet.Substring(ProcessNumber, 1)
Else
CaptchaString += CStr(My.Computer.Clock.LocalTime.Minute \ 6)
End If
ProcessNumber = My.Computer.Clock.LocalTime.DayOfYear
If ProcessNumber Mod 2 = 0 Then
ProcessNumber = ProcessNumber \ 8
CaptchaString += Alphabet.Substring(ProcessNumber, 1)
Else
CaptchaString += CStr(ProcessNumber \ 37)
End If
TickRandom = My.Computer.Clock.TickCount.ToString
ProcessNumber = Val(TickRandom.Substring(TickRandom.Length - 1, 1))
If ProcessNumber Mod 2 = 0 Then
CaptchaString += CStr(ProcessNumber)
Else
ProcessNumber = Math.Abs(Int(Math.Cos(Val(TickRandom)) * 51))
CaptchaString += Alphabet.Substring(ProcessNumber, 1)
End If
ProcessNumber = My.Computer.Clock.LocalTime.Hour
If ProcessNumber Mod 2 = 0 Then
ProcessNumber = Math.Abs(Int(Math.Sin(Val(My.Computer.Clock.LocalTime.Year)) * 51))
CaptchaString += Alphabet.Substring(ProcessNumber, 1)
Else
CaptchaString += CStr(ProcessNumber \ 3)
End If
ProcessNumber = My.Computer.Clock.LocalTime.Millisecond
If ProcessNumber > 521 Then
ProcessNumber = Math.Abs((ProcessNumber \ 10) - 52)
CaptchaString += Alphabet.Substring(ProcessNumber, 1)
Else
CaptchaString += CStr(My.Computer.Clock.LocalTime.Second \ 6)
End If
CaptchaGraf.Clear(Color.White)
For hasher As Integer = 0 To 5
CaptchaGraf.DrawString(CaptchaString.Substring(hasher, 1), DrawingFont, Brushes.Black, hasher * 20 + hasher + ProcessNumber \ 200, (hasher Mod 3) * (ProcessNumber \ 200))
Next
PictureBox1.Image = CaptchaImage
End Sub
MORE ARTICLE
How To Create Image Converter VB.Net
Then, double-click Button 1 to identify the text that is typed in the TextBox equal to the captcha that will appear in the PictureBox
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If TextBox1.Text = CaptchaString Then
MsgBox("Captcha Correct", MsgBoxStyle.Information)
TextBox1.Clear()
GenerateCaptcha()
Else
MsgBox("Captcha Incorrect", MsgBoxStyle.Exclamation)
TextBox1.Clear()
End If
End Sub
And finally, call the function you have created into Form_Load and Button_2 click
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
GenerateCaptcha()
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
GenerateCaptcha()
End Sub
When done and there is no error, the program is ready to run.