验证码生成

注意:
<asp:Image id="ImageButton1" runat="server" ImageUrl="RanImg.aspx"></asp:Image>
比较则引用Session值
public class RanImg : System.Web.UI.Page

	{

		private void Page_Load(object sender, System.EventArgs e)

		{

			// 在此处放置用户代码以初始化页面

			base.Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);

	    	this.CreateCheckCodeImage(GenerateCheckCode()); 

		}

		private string GenerateCheckCode() 

		{ 

			int number; 

			char code; 

			string checkCode = String.Empty; 

   

			System.Random random = new Random(); 

   

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

			{ 

				number = random.Next(); 

   

				if(number % 2 == 0) 

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

				else 

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

   

				checkCode += code.ToString(); 

			} 

   

			Session["imgCode"] = 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<25; 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<100; 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); 

   

				System.IO.MemoryStream ms = new System.IO.MemoryStream(); 

				image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif); 

				Response.ClearContent(); 

				Response.ContentType = "image/Gif"; 

				Response.BinaryWrite(ms.ToArray()); 

			} 

			finally 

			{ 

				g.Dispose(); 

				image.Dispose(); 

			} 

		} 

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

		override protected void OnInit(EventArgs e)

		{

			//

			// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。

			//

			InitializeComponent();

			base.OnInit(e);

		}

		

		/// <summary>

		/// 设计器支持所需的方法 - 不要使用代码编辑器修改

		/// 此方法的内容。

		/// </summary>

		private void InitializeComponent()

		{    

			this.Load += new System.EventHandler(this.Page_Load);

		}

		#endregion

	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值