在页面中生成验证码的代码:
private void Page_Load( object sender, System.EventArgs e) { string checkCode = GetRandomCode( 4 ); Session[ " CheckCode " ] = checkCode; SetPageNoCache(); CreateImage(checkCode); } /// <summary> /// 设置页面不被缓存 /// </summary> private void SetPageNoCache() { Response.Buffer = true ; Response.ExpiresAbsolute = System.DateTime.Now.AddSeconds( - 1 ); Response.Expires = 0 ; Response.CacheControl = " no-cache " ; Response.AppendHeader( " Pragma " , " No-Cache " ); } private string GetRandomCode( int CodeCount) { string allChar = " 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,i,J,K,M,N,P,Q,R,S,T,U,W,X,Y,Z " ; string [] allCharArray = allChar.Split( ' , ' ); string RandomCode = "" ; int temp = - 1 ; Random rand = new Random(); for ( int i = 0 ;i < CodeCount;i ++ ) { if (temp != - 1 ) { rand = new Random(temp * i * (( int ) DateTime.Now.Ticks)); } int t = rand.Next( 33 ); while (temp == t) { t = rand.Next( 33 ); } temp = t; RandomCode += allCharArray[t]; } return RandomCode; } private void CreateImage( string checkCode) { int iwidth = ( int )(checkCode.Length * 14 ); System.Drawing.Bitmap image = new System.Drawing.Bitmap(iwidth, 20 ); Graphics g = Graphics.FromImage(image); Font f = new System.Drawing.Font( " Arial " , 10 ); // , System.Drawing.FontStyle.Bold); Brush b = new System.Drawing.SolidBrush(Color.Black); Brush r = new System.Drawing.SolidBrush(Color.FromArgb( 166 , 8 , 8 )); // g.FillRectangle(new System.Drawing.SolidBrush(Color.Blue),0,0,image.Width, image.Height); // g.Clear(Color.AliceBlue); // 背景色 g.Clear(System.Drawing.ColorTranslator.FromHtml( " #99C1CB " )); // 背景色 char [] ch = checkCode.ToCharArray(); for ( int i = 0 ; i < ch.Length; i ++ ) { if (ch[i] >= ' 0 ' && ch[i] <= ' 9 ' ) { // 数字用红色显示 g.DrawString(ch[i].ToString(), f, r, 3 + (i * 12 ), 3 ); } else { // 字母用黑色显示 g.DrawString(ch[i].ToString(), f, b, 3 + (i * 12 ), 3 ); } } System.IO.MemoryStream ms = new System.IO.MemoryStream(); image.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg); // history back 不重复 Response.Cache.SetNoStore(); // 这一句 Response.ClearContent(); Response.ContentType = " image/Jpeg " ; Response.BinaryWrite(ms.ToArray()); g.Dispose(); image.Dispose(); }
调用的时候设置imageurl='...aspx'就可以了。
转载于:https://www.cnblogs.com/Hard/archive/2009/02/25/1398061.html