您的位置:首页 > 其它

随机生成字母数字验证码,可定义验证码的长度

2007-09-25 13:28 579 查看
随机生成字母数字验证码




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.Imaging;




public partial class Login : System.Web.UI.Page




...{


protected void Page_Load(object sender, EventArgs e)




...{


if (!IsPostBack)




...{


this.CreateCheckCodeImage(GenerateCheckCode());


}


}


private string GenerateCheckCode()




...{


int number;


char code;


string checkCode = String.Empty;




System.Random random = new Random();




for (int i = 0; i < 15; i++)




...{


number = random.Next();


if (number % 2 == 0)


code = (char)('0' + (char)(number % 10));


else


code = (char)('A' + (char)(number % 26));




checkCode += code.ToString();


}


Response.Cookies.Add(new HttpCookie("CheckCode", checkCode));


return checkCode;


}




private void CreateCheckCodeImage(string checkCode)




...{


if (checkCode == null || checkCode.Trim() == String.Empty)


return;




System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22);


Graphics g = Graphics.FromImage(image);




try




...{


//生成随机生成器


Random random = new Random();




//清空图片背景色


g.Clear(Color.White);




//画图片的背景噪音线


for (int i = 0; i < 35; i++)




...{


int x1 = random.Next(image.Width);


int x2 = random.Next(image.Width);


int y1 = random.Next(image.Height);


int y2 = random.Next(image.Height);




g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);


}




Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));


System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true);


g.DrawString(checkCode, font, brush, 2, 2);




//画图片的前景噪音点


for (int i = 0; i < 180; i++)




...{


int x = random.Next(image.Width);


int y = random.Next(image.Height);




image.SetPixel(x, y, Color.FromArgb(random.Next()));


}




//画图片的边框线


g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);


image.Save(Server.MapPath("imgs") + "/VaImag.gif", ImageFormat.Gif);


}


finally




...{


g.Dispose();


image.Dispose();


}


}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐