天天看點

ASP.Net生成簡易驗證碼

建立一個名為ValidateCode.aspx的頁面,粘貼以下代碼即可

Public Class ValidateCode

    Inherits System.Web.UI.Page

#Region " Web 窗體設計器生成的代碼 "

    '該調用是 Web 窗體設計器所必需的。

    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

    End Sub

    '注意: 以下占位符聲明是 Web 窗體設計器所必需的。

    '不要删除或移動它。

    Private designerPlaceholderDeclaration As System.Object

    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init

        'CODEGEN: 此方法調用是 Web 窗體設計器所必需的

        '不要使用代碼編輯器修改它。

        InitializeComponent()

    End Sub

#End Region

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        '在此處放置初始化頁的使用者代碼

        Me.CreateCheckCodeImage(GenerateCheckCode())

    End Sub

    Private Function GenerateCheckCode() As String

        Dim number, i As Integer

        Dim code As Char

        Dim checkCode, returnCode As String

        checkCode = String.Empty

        returnCode = String.Empty

        Dim random As System.Random = New Random

        For i = 1 To 5

            number = random.Next()

            If number Mod 2 = 0 Then

                code = Chr((number Mod 10) + 48)

            Else

                code = Chr((number Mod 26) + 65)

            End If

            If code = "0" Or code = "O" Then

                i -= 1

            Else

                checkCode += code.ToString & " "

                returnCode += code.ToString

            End If

        Next

        Session.Add("ValidateCode", returnCode)

        Return checkCode

    End Function

    Private Sub CreateCheckCodeImage(ByVal checkCode As String)

        If checkCode.Trim = "" Then

            Return

        End If

        Dim i As Integer

        Dim image As System.Drawing.Bitmap = New System.Drawing.Bitmap(57, 20)

        Dim g As Graphics = Graphics.FromImage(image)

        Try

            '生成随機生成器

            Dim random As Random = New Random

            '清空圖檔背景色

            g.Clear(Color.White)

            '畫圖檔的背景噪音線

            Dim x1, x2, y1, y2 As Integer

            For i = 1 To 20

                x1 = random.Next(image.Width)

                x2 = random.Next(image.Width)

                y1 = random.Next(image.Height)

                y2 = random.Next(image.Height)

                g.DrawLine(New Pen(Color.Silver), x1, y1, x2, y2)

            Next

            Dim font As Font = New System.Drawing.Font("Arial", 12, FontStyle.Bold, GraphicsUnit.Pixel)

            Dim brush As System.Drawing.Drawing2D.LinearGradientBrush = New System.Drawing.Drawing2D.LinearGradientBrush(New Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2F, True)

            g.DrawString(checkCode, font, brush, 2, 2)

            '畫圖檔的前景噪音點

            Dim x, y As Integer

            For i = 1 To 50

                x = random.Next(image.Width)

                y = random.Next(image.Height)

                image.SetPixel(x, y, Color.FromArgb(random.Next()))

            Next

            '畫圖檔的邊框線

            g.DrawRectangle(New Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1)

            Dim ms As System.IO.MemoryStream = New System.IO.MemoryStream

            image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg)

            Response.ClearContent()

            Response.ContentType = "image/Jpeg"

            Response.BinaryWrite(ms.ToArray())

        Catch ex As Exception

            Return

            Exit Sub

        End Try

    End Sub

End Class

然後再調用頁面的Page_Load方法中加入(image1為Image控件)

        If Not IsPostBack Then

            Image1.ImageUrl = "ValidateCode.aspx"

        End If

完成