using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace SCard
{
	/// <summary>
	/// 验证码生成器
	/// </summary>
	public partial class ValidateCode : System.Web.UI.Page
	{
		protected void Page_Load(object sender, System.EventArgs e)
		{
			this.CreateCheckCodeImage(GenerateCheckCode());
		}
		private string GenerateCheckCode()
		{
			int number;
			char code;
			string checkCode = String.Empty;
			System.Random random = new Random();
            for (int i = 0; i < 4; i++)
            {
                number = random.Next();
               // if (number % 2 == 0)
                //{
                    code = (char)('0' + (char)(number % 10));
                //}
                //else
                //{
                //    if (number % 3 == 0)
                //    {
                //        code = (char)('A' + (char)(number % 26));
                //    }
                //    else
                //    {
                //        code = (char)('a' + (char)(number % 26));
                //    }
                //}
                Response.Write(number);
                checkCode += code.ToString();

            }
			Session["CheckCode"]=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<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", 13, (System.Drawing.FontStyle.Bold));
				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);
				//System.Drawing.Drawing2D.LinearGradientBrush brush=new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0,0,image.Width,image.Height),Color.Blue,Color.Blue,1.0f,true);
				
				g.DrawString(checkCode, font, brush, 6, 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()));
					image.SetPixel(x,y,Color.Yellow );
				}
                */
				//画图片的边框线
				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()
		{    
		}
		#endregion
	}
}
