恩。自己开始写.net的时候写的。参照了一些网络上前辈们的经验,自己修改了部分。
加了可以动态调整字符颜色的功能。
调用方法
新建文件getcode.aspx
内容如下:
<%@Page Language=vb Inherits="WanerSoftCode.Code.ExtraCode" EnableSessionState="true" %>
新建文件login.aspx,其中调用验证码的部分为:
<asp:Image id="Image1" runat="server" ImageUrl="getcode.aspx">
class类文件内容
Imports System
Imports System.io
Imports System.Drawing
Imports System.Drawing.Imaging
Imports Microsoft.VisualBasic
Namespace WanerSoftCode.Code
Public Class ExtraCode
Inherits System.Web.UI.Page
Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
Dim ExtraCode As String = RndNum(4)
Session("regma") = LCase(ExtraCode)
GetExtraCode(ExtraCode)
End Sub
Sub GetExtraCode(ByVal ExtraCode)
Dim img As System.drawing.Bitmap
Dim g As Graphics
Dim ms As MemoryStream
Dim gheight As Integer = Int(Len(ExtraCode) * 11.5)
img = New Bitmap(gheight, 17)
g = Graphics.FromImage(img)
g.DrawString(Left(ExtraCode, 1), (New Font("BatangChe", 10)), (New SolidBrush(ColorTranslator.FromHtml(getColor()))), 3, 1.5)
g.DrawString(Right(Left(ExtraCode, 2), 1), (New Font("BatangChe", 10)), (New SolidBrush(ColorTranslator.FromHtml(getColor()))), 12, 1.5)
g.DrawString(Left(Right(ExtraCode, 2), 1), (New Font("BatangChe", 10)), (New SolidBrush(ColorTranslator.FromHtml(getColor()))), 21, 1.5)
g.DrawString(Right(ExtraCode, 1), (New Font("BatangChe", 10)), (New SolidBrush(ColorTranslator.FromHtml(getColor()))), 30, 1.5)
ms = New MemoryStream
img.Save(ms, ImageFormat.Png)
Response.ClearContent()
Response.ContentType = "image/png"
Response.BinaryWrite(ms.ToArray())
g.Dispose()
img.Dispose()
Response.End()
End Sub
Private Function RndNum(ByVal VcodeNum) As String
Dim Vchar As String = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,i,J,K,L,M,N,o,P,Q,R,S,T,U,W,V,X,Y,Z"
Dim VcArray() As String = Split(Vchar, ",")
Dim VNum As String = ""
Dim i As Byte
For i = 1 To VcodeNum
Randomize()
VNum = VNum & VcArray(Int(35 * Rnd()))
Next
Return VNum
End Function
Private Function getColor() As String
Dim font_array(6) As String
font_array(0) = "#FF0000"
font_array(1) = "#0000FF"
font_array(2) = "#FF6600"
font_array(3) = "#000000"
font_array(4) = "#339900"
font_array(5) = "#FF00FF"
Return font_array(Int(6 * Rnd()))
End Function
End Class
End Namespace