using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.Text; using System.IO; public partial class Default2 : System.Web.UI.Page { static readonly char[] codeList = new char[]{'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','v','w','x','y','z', 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}; string sessionKey = "ValidateCode";//保存在Session中所用的KEY int codeLength = 5; //验证码字符长度 int width = 80; //验证码图片宽度 int height = 20; //验证码图片高度 int fontSize = 14; //验证码字体大小 protected void Page_Load(object sender, EventArgs e) { //获取验证码字符串 string strCode = GetValidateCode(); //将验证码字符串保存到Session中 Session[sessionKey] = strCode; //实例化图片 using (Bitmap img = new Bitmap(width, height)) { //获取画板 using (Graphics g = Graphics.FromImage(img)) { g.Clear(Color.White); Random random = new Random(); //画图片的背景噪音线 for (int i = 0; i < 15; i++) { int x1 = random.Next(width); int x2 = random.Next(width); int y1 = random.Next(height); int y2 = random.Next(height); g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2); } g.DrawRectangle(new Pen(Color.Silver), 0, 0, img.Width - 1, img.Height - 1); //绘制验证码 using (Font font = new Font("Rockwell", fontSize, FontStyle.Bold | FontStyle.Italic)) { g.DrawString(strCode, font, new LinearGradientBrush(new Point(0, 0), new Point(0, 5), Color.Blue, Color.Chocolate), (width - font.SizeInPoints * codeLength) / 2, (height - font.SizeInPoints) / 3); } using (MemoryStream mStream = new MemoryStream()) { //将图片存入内存中 img.Save(mStream, ImageFormat.Gif); //将图片输出至页面 Response.ClearContent(); Response.ContentType = "image/gif"; Response.BinaryWrite(mStream.ToArray()); } } } Response.End(); } //生成验证码 public string GetValidateCode() { Random rand = new Random(); StringBuilder strBuilder = new StringBuilder(codeLength); for (int i = 0; i < codeLength; i++) { strBuilder.Append(codeList[rand.Next(0, codeList.Length)]); } return strBuilder.ToString(); } }