! A# k5 F& U7 d- ]" u0 R- `3 dEnd Sub + K+ G7 ?, P3 Y& t! T. q
9 I8 m- J) E/ N+ c
'生成图象验证码函数 + b! Y1 g8 v# m o- }; V3 s
6 }3 n/ o4 ?+ ?; D! E. |) CSub ValidateCode(VNum) y) j0 y8 y6 c1 I / C8 L. r' s& n! ~2 eDim Img as System.Drawing.Bitmap : ]( Y$ k1 P6 j9 Z
. y# G& U5 E: U2 j0 W: HDim g as Graphics & K( L! U3 W8 O* D
" E- I; q$ f* I( A6 z) ]8 j
Dim ms as MemoryStream + @0 J2 C' W% N3 n3 Q / Y8 D+ h" |8 f- _dim gheight as integer=Int(Len(VNum)*11.5) 2 A! E* \* T9 i" ~+ {. L7 m0 q! |% ?1 J
'gheight为图片宽度,根据字符长度自动更改图片宽度 - v' x, N! O9 U5 Z: F& r ) O, l* m/ {' p# Bimg=new BitMap(Gheight,20) 2 Y. ]9 C. f. Q8 }' w9 S) Z2 e k P9 d8 E4 Z+ Eg=Graphics.FromImage(img) 4 E+ ?" F* A4 s; o8 g u
/ v6 ^8 R( c6 [- N1 W9 R# I7 ^6 sg.DrawString(VNum,(New Font("Arial",10)),(New SolidBrush(color.blue)),3,3)'在矩形内绘制字串(字串,字体,画笔颜色,左上x.左上y) % ?! p) k) [) d/ M) }3 b* R
- j* M, U1 A9 i" g" T
ms=New MemoryStream() : F7 ]! f# ~, F/ M0 u4 T" ?- R- Q3 Y
img.Save(ms,ImageFormat.Png) 9 E/ y4 b" L" V3 b V+ K" I 6 i; @9 X* ?; M- Z* ^Response.ClearContent() '需要输出图象信息 要修改HTTP头 : W9 X4 {4 o/ s! J7 A8 h) D. m. p' P) E
Response.ContentType="image/Png" 1 J# q7 k6 q' Z$ h
4 p4 Z, N4 i& i) x% _& \9 g
Response.BinaryWrite(ms.ToArray()) & o u) X* ]- ~. q. S0 W/ N
4 n* b5 q$ _8 l% t( sg.Dispose() ( S1 }( {4 Z; V. E4 I# Y& [# }' i2 v* V- b
img.Dispose() & d. D- |& ~0 h
4 f' a% ]: m8 W* ^Response.End() 3 C3 H9 G2 u! O9 V7 l
9 z' G" Q0 T) J% a% REnd Sub & D) D- W2 k! y2 s* U [$ w
# f' a8 v7 F9 o( f2 _, L8 o" d8 {
'-------------------------------------------- 7 b0 P8 {6 f3 D3 e
& T3 B0 |5 v; X'函数名称:RndNum 7 u3 w+ |4 M, I/ @& W( Q5 U
) N" P4 e; i( w9 _6 f'函数参数:VcodeNum--设定返回随机字符串的位数 K H- x+ |0 _7 o8 E; s* e y- ~/ A: ~% e. W
'函数功能:产生数字和字符混合的随机字符串 ) V4 l" j. }3 m$ Z
8 g1 t" N( _" I c" V
Function RndNum(VcodeNum) 3 [. u& b, A" B# x6 R