'本控件实现附加码功能,自动产生附加码,可以调节字体大小,验证码位数。
Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.IO

Public Class Wuc附加码Class Wuc附加码
Inherits System.Web.UI.UserControl


Web 窗体设计器生成的代码#Region " Web 窗体设计器生成的代码 "

'该调用是 Web 窗体设计器所必需的。

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

End Sub

'注意: 以下占位符声明是 Web 窗体设计器所必需的。
'不要删除或移动它。
Private designerPlaceholderDeclaration As System.Object


Private Sub Page_Init()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()Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Font_Size'字体大小 intrger
'Char_Number'验证码的位数 intrger
'BackgroundColor'背景颜色 十六进制数的字符串
Dim My_Stream As MemoryStream = Get_Images(12, 4, "#ffffff")
Show_image(My_Stream) '显示内存图像
My_Stream.Close() '关闭打开的流文件

End Sub

Function Get_Images()Function Get_Images(ByVal Font_Size As Integer, ByVal Char_Number As Integer, ByVal BackgroundColor As String) As MemoryStream '把字符转换为图像,并且保存到内存流
Dim image_w As Integer = Int(Font_Size * 1.3) + Font_Size * Char_Number '这个数字在调用页面需要,你要自己算出明确的数值 注意注意注意注意!!!!!
Dim image_h As Integer = Int(2.5 * Font_Size) '这个数字在调用页面需要,你要自己算出明确的数值 注意注意注意注意!!!!!

Dim Temp_Bitmap As Bitmap '封装GDI+位图
Dim Temp_Graphics As Graphics '封装GDI+绘图面
Dim Color_Back As Color = ColorTranslator.FromHtml(BackgroundColor) '背景颜色

Temp_Bitmap = New Bitmap(image_w, image_h, PixelFormat.Format32bppRgb) '注意注 确定背景大小

Temp_Graphics = Graphics.FromImage(Temp_Bitmap)
Temp_Graphics.FillRectangle(New SolidBrush(Color_Back), New Rectangle(0, 0, image_w, 5 * image_h)) '注意注 绘制背景

'Dim Sesson_Company As String = "" '为了进行验证比较
Dim ran As New System.Random
Dim codeint As Integer = ran.Next(1000, 9999)
Dim code As String = CStr(codeint)

Me.Session.Add("code", code)
Temp_Graphics.DrawString(code, New Font("Arial", 16), New SolidBrush(Color.Black), 0, 0)
Dim Temp_Stream As MemoryStream = New MemoryStream
Temp_Bitmap.Save(Temp_Stream, ImageFormat.Jpeg)
Temp_Graphics.Dispose() '释放资源
Temp_Bitmap.Dispose() '释放资源
Temp_Stream.Close() '关闭打开的流文件
Return Temp_Stream '返回流
End Function

Function Show_image()Function Show_image(ByVal Show_Stream As MemoryStream) '显示内存图像
Response.ClearContent()
Response.ContentType = "Image/Jpeg"
Response.BinaryWrite(Show_Stream.ToArray())
Response.End()
End Function
End Class

