Hallo Leute,
hab mich mal kurz hingesetzt und eine Captcha-Klasse geschrieben:
"Code"
Aufruf ganz einfach
Viel Spass
hab mich mal kurz hingesetzt und eine Captcha-Klasse geschrieben:
VB.NET-Quellcode
- ''' <summary>
- ''' Stellt ein einfaches Captcha dar.
- ''' </summary>
- ''' <remarks></remarks>
- Public Class Captcha
- 'Deklaration der Variablen für die Eigenschaften
- Private _bitmap As Bitmap
- Private _text As String
- Dim r As New Random(Now.Millisecond)
- 'Kontstruktoren
- Public Sub New()
- _bitmap = New Bitmap(500, 100)
- 'Captcha zeichenen
- DrawBitmap()
- End Sub
- 'Funktionen
- ''' <summary>
- ''' Gibt einen zufälligen Buchstaben zurück
- ''' </summary>
- ''' <returns></returns>
- ''' <remarks></remarks>
- Private Function GetRandomChar() As Char
- 'Zeichen generieren
- NeuesZeichen: Dim i = r.Next(10, 100)
- Dim zeichen = Char.ConvertFromUtf32(i)
- 'Zeichen überprüfen
- If Char.IsLetter(zeichen) Or Char.IsDigit(zeichen) Then
- Return zeichen
- Else
- GoTo NeuesZeichen
- End If
- End Function
- ''' <summary>
- ''' Gibt eine zufällige Farbe zurück
- ''' </summary>
- ''' <returns></returns>
- ''' <remarks></remarks>
- Private Function GetRandomColor() As Color
- Return Color.FromArgb(255, r.Next(0, 100), r.Next(0, 200), r.Next(0, 256))
- End Function
- ''' <summary>
- ''' Gibt einen zufälligen Punkt im Bild zurück
- ''' </summary>
- ''' <returns></returns>
- ''' <remarks></remarks>
- Function GetRandomPoint() As Point
- Return New Point(r.Next(0, _bitmap.Width), r.Next(0, _bitmap.Height))
- End Function
- ''' <summary>
- ''' Zeichnet das Captcha
- ''' </summary>
- ''' <returns></returns>
- ''' <remarks></remarks>
- Private Function DrawBitmap()
- Using g = Graphics.FromImage(_bitmap)
- 'Hintergrund zeichenen
- g.FillRectangle(Brushes.DarkGreen, New Rectangle(0, 0, _bitmap.Width, _bitmap.Height))
- Dim last_y = 10
- For index = 1 To 7
- Dim gc = GetRandomChar()
- 'Zeichen zeichnen
- g.DrawString(gc.ToString, New Font(FontFamily.GenericMonospace.Name, r.Next(20, 40)), New SolidBrush(GetRandomColor), New Point(r.Next(last_y, last_y + 11), r.Next(10, 70)))
- 'Text erweitern
- _text &= gc
- last_y += 55
- Next
- 'Noch eine Linie - zur sicherheit!
- g.DrawCurve(Pens.Black, New Point() {New Point(0, r.Next(0, _bitmap.Height)), GetRandomPoint(), New Point(_bitmap.Width, r.Next(0, _bitmap.Height))})
- End Using
- End Function
- 'Eigenschaften
- ''' <summary>
- ''' Das fertige Captcha
- ''' </summary>
- ''' <value></value>
- ''' <returns></returns>
- ''' <remarks></remarks>
- Public ReadOnly Property Bitmap As Image
- Get
- Return _bitmap
- End Get
- End Property
- ''' <summary>
- ''' Die Lösung des Captchas
- ''' </summary>
- ''' <value></value>
- ''' <returns></returns>
- ''' <remarks></remarks>
- Public ReadOnly Property Text As String
- Get
- Return _text
- End Get
- End Property
- End Class
Aufruf ganz einfach
VB.NET-Quellcode
- Dim c As New Captcha()
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- pb_Captcha.Image = c.Bitmap
- End Sub
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- If TextBox1.Text.ToLower = c.Text.ToLower Then
- MessageBox.Show("Richtig.")
- Else
- MessageBox.Show("Falsch.")
- End If
- c = New Captcha()
- pb_Captcha.Image = c.Bitmap
- TextBox1.Clear()
- TextBox1.Select()
- End Sub
Viel Spass
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Memo“ ()