[VB.NET] - Làm ứng dụng có Captcha Image

Các bài viết hướng dẫn về Visual Basic .NET và C#

Moderators: tungcan5diop, QUANITGROBEST

Post Reply
User avatar
clarkkent
Mạnh Thường Quân
Mạnh Thường Quân
Posts: 1641
Joined: Wed 16/04/2008 11:25 am
Location: Chợ Lách - Bến Tre
Been thanked: 32 times
Contact:

[VB.NET] - Làm ứng dụng có Captcha Image

Post by clarkkent »

Tên bài viết: [VB.NET] - Làm ứng dụng có Captcha Image
Tác giả: Nguyễn Trung Tín sưu tầm
Cấp độ bài viết: Chưa đánh giá
Tóm tắt: [VB.NET] - Làm ứng dụng có Captcha Image
thấy có bài của neverland87 nhưng là C#, tìm được cái cho VB.NET nè, xấu xí hơn >:)

Ảnh minh họa :D
tcaptchaimage.PNG
Class CaptchaImage

Code: Select all

Public Class CaptchaImage    Protected RandomValue As New Random     Protected _captchaImage As Bitmap    Protected _captchaHeight As Integer    Protected _captchaWidth As Integer    Protected _captchaFont As Font    Protected _captchaCode As String     ''' <summary>    ''' Useful for subclassing    ''' </summary>    ''' <remarks></remarks>    Public Sub New()     End Sub     ''' <summary>    ''' Loads properties and generates an initial captcha value and graphic    ''' </summary>    ''' <param name="imageWidth">The Width of the Captcha Graphic</param>    ''' <param name="imageHeight">The Height of the Captcha Graphic</param>    ''' <param name="imageFont">The Font of the Captcha Graphic</param>    ''' <remarks></remarks>    Public Sub New(ByVal imageWidth As Integer, ByVal imageHeight As Integer, ByVal imageFont As Font)        _captchaHeight = imageHeight        _captchaWidth = imageWidth        _captchaFont = imageFont        GenerateNewCaptcha()    End Sub     ''' <summary>    ''' Generates a new captcha value and graphic for the class    ''' </summary>    ''' <remarks></remarks>    Public Sub GenerateNewCaptcha()        If _captchaFont Is Nothing OrElse _captchaHeight = 0 OrElse _captchaWidth = 0 Then            Exit Sub        End If        _captchaCode = RandomValue.Next(10000, 100000).ToString        _captchaImage = New Bitmap(_captchaWidth, _captchaHeight)        Using CaptchaGraphics As Graphics = Graphics.FromImage(CaptchaImage)            Using BackgroundBrush As New Drawing2D.HatchBrush(Drawing2D.HatchStyle.SmallGrid, Color.DimGray, Color.WhiteSmoke)                CaptchaGraphics.FillRectangle(BackgroundBrush, 0, 0, _captchaWidth, _captchaHeight)            End Using            Dim CharacterSpacing As Integer = (_captchaWidth \ 5) - 1            Dim HorizontalPosition As Integer            Dim MaxVerticalPosition As Integer            For Each CharValue As Char In _captchaCode.ToCharArray                MaxVerticalPosition = _captchaHeight - Convert.ToInt32(CaptchaGraphics.MeasureString(CharValue, _captchaFont).Height)                CaptchaGraphics.DrawString(CharValue, _captchaFont, Brushes.DimGray, HorizontalPosition, RandomValue.Next(0, MaxVerticalPosition))                HorizontalPosition += CharacterSpacing + RandomValue.Next(-1, 1)            Next            For Counter As Integer = 0 To 24                CaptchaGraphics.FillEllipse(Brushes.DimGray, RandomValue.Next(1, _captchaWidth), RandomValue.Next(1, _captchaHeight), RandomValue.Next(1, 4), RandomValue.Next(1, 4))            Next            For Counter As Integer = 0 To 24                CaptchaGraphics.FillEllipse(Brushes.WhiteSmoke, RandomValue.Next(1, _captchaWidth), RandomValue.Next(1, _captchaHeight), RandomValue.Next(1, 4), RandomValue.Next(1, 4))            Next        End Using    End Sub     ''' <summary>    ''' The captcha bitmap image    ''' </summary>    ''' <value></value>    ''' <returns></returns>    ''' <remarks></remarks>    Public Property CaptchaImage() As Bitmap        Get            Return _captchaImage        End Get        Set(ByVal value As Bitmap)            _captchaImage = value        End Set    End Property     ''' <summary>    ''' The value of the captcha    ''' </summary>    ''' <value></value>    ''' <returns></returns>    ''' <remarks></remarks>    Public Property CaptchaCode() As String        Get            Return _captchaCode        End Get        Set(ByVal value As String)            _captchaCode = value        End Set    End Property     ''' <summary>    ''' The Height of the Captcha Graphic    ''' </summary>    ''' <value></value>    ''' <returns></returns>    ''' <remarks></remarks>    Public Property CaptchaHeight() As Integer        Get            Return _captchaHeight        End Get        Set(ByVal value As Integer)            _captchaHeight = value        End Set    End Property     ''' <summary>    ''' The Width of the Captcha Graphic    ''' </summary>    ''' <value></value>    ''' <returns></returns>    ''' <remarks></remarks>    Public Property CaptchaWidth() As Integer        Get            Return _captchaWidth        End Get        Set(ByVal value As Integer)            _captchaWidth = value        End Set    End Property     ''' <summary>    ''' The Font of the Captcha Graphic    ''' </summary>    ''' <value></value>    ''' <returns></returns>    ''' <remarks></remarks>    Public Property CaptchaFont() As Font        Get            Return _captchaFont        End Get        Set(ByVal value As Font)            _captchaFont = value        End Set    End PropertyEnd Class 
Sử dụng trong Form

Code: Select all

Public Class Form1    Dim myCaptcha As New CaptchaImage    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load        Dim f As New Font("Tahoma", 30, FontStyle.Bold)         myCaptcha.CaptchaHeight = PictureBox1.Height        myCaptcha.CaptchaWidth = PictureBox1.Width        myCaptcha.CaptchaFont = f        myCaptcha.GenerateNewCaptcha()         PictureBox1.Image = myCaptcha.CaptchaImage ' 1 PictureBox    End Sub     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click '1 Button để kiểm tra        If TextBox1.Text.Trim = myCaptcha.CaptchaCode Then '1 TextBox            MsgBox("Bạn đã nhập đúng!")        Else            MsgBox("Bạn đã nhập sai!")        End If    End Sub     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click '1 Button để tạo cái mới        Me.Form1_Load(sender, e)    End SubEnd Class 
• Hôm bây: www.tinsoftware.com ^ ^
Cố gắng lên...
vanlam_it
Thành viên chính thức
Thành viên chính thức
Posts: 38
Joined: Sun 13/04/2008 6:57 pm

Re: [VB.NET] - Làm ứng dụng có Captcha Image

Post by vanlam_it »

rất hay. thanks pro nhiều. có thêm nhiều style đẹp thì :D
User avatar
NoBi
Quản trị
Quản trị
Posts: 970
Joined: Tue 18/03/2008 1:22 pm
Location: Sài Gòn
Has thanked: 58 times
Been thanked: 68 times
Contact:

Re: [VB.NET] - Làm ứng dụng có Captcha Image

Post by NoBi »

Captcha thường dùng cho Web, còn trong ứng dụng thì dùng để làm gì nhỉ?. Cho đẹp chăng?
:>
User avatar
clarkkent
Mạnh Thường Quân
Mạnh Thường Quân
Posts: 1641
Joined: Wed 16/04/2008 11:25 am
Location: Chợ Lách - Bến Tre
Been thanked: 32 times
Contact:

Re: [VB.NET] - Làm ứng dụng có Captcha Image

Post by clarkkent »

NoBi wrote:Captcha thường dùng cho Web, còn trong ứng dụng thì dùng để làm gì nhỉ?. Cho đẹp chăng?
Chuyển qua asp.net được mà :D :-/

Class Captcha ASP.NET mới sưu tầm
Attachments
CaptchaImage_src.zip
Captcha ASP.NET
(5 KiB) Downloaded 494 times
• Hôm bây: www.tinsoftware.com ^ ^
Cố gắng lên...
User avatar
vo_minhdat2007
Quản trị
Quản trị
Posts: 2227
Joined: Sun 17/07/2005 1:40 am
Has thanked: 13 times
Been thanked: 87 times
Contact:

Re: [VB.NET] - Làm ứng dụng có Captcha Image

Post by vo_minhdat2007 »

Đôi khi CSDL cần log in, log sai 3 lần trở đi thì ép nhập Capcha mới cho thử pass chẳng hạn :D. (WinRar làm thế thì mấy trình mò pass bó tay :)))
Post Reply

Return to “[.NET] Bài viết hướng dẫn”