getvalidateimg.aspx.cs

来自「x2webcontrols」· CS 代码 · 共 100 行

CS
100
字号
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 X2Design
{
	/// <summary>
	/// getValidateImg 的摘要说明。
	/// </summary>
	public class getValidateImg : System.Web.UI.Page
	{

		private void Page_Load(object sender, System.EventArgs e)
		{
			char[] chars="23456789abcdefghjkmnpqrstuvwxyz".ToCharArray();
			System.Random random=new Random();

			string validateCode=string.Empty;
			for(int i=0;i<4;i++)validateCode+=chars[random.Next(0,chars.Length)].ToString();
			Session["x2_validate_code"]=validateCode;
			CreateImage(validateCode);
		}

		private void CreateImage(string checkCode)
		{
			int iwidth = (int)(checkCode.Length * 15);
			System.Drawing.Bitmap image = new System.Drawing.Bitmap(iwidth, 20);
			Graphics g = Graphics.FromImage(image);
			g.Clear(Color.White);
			//定义颜色
			Color[] c = {Color.Black,Color.Red,Color.DarkBlue,Color.Green,Color.Orange,Color.Brown,Color.DarkCyan,Color.Purple};
			//定义字体            
			string[] font = {"Verdana","Microsoft Sans Serif","Comic Sans MS","Arial","宋体"};
			Random rand = new Random();
			//随机输出噪点
			for(int i=0;i<50;i++)
			{
				int x = rand.Next(image.Width);
				int y = rand.Next(image.Height);
				g.DrawRectangle(new Pen(Color.LightGray, 0),x,y,1,1);
			}

			//输出不同字体和颜色的验证码字符
			for(int i=0;i<checkCode.Length;i++)
			{
				int cindex = rand.Next(7);
				int findex = rand.Next(5);
                
				Font f = new System.Drawing.Font(font[findex], 10, System.Drawing.FontStyle.Bold);
				Brush b = new System.Drawing.SolidBrush(c[cindex]);
				int ii=4;
				if((i+1)%2==0)
				{
					ii=2;
				}
				g.DrawString(checkCode.Substring(i,1), f, b, 3+(i*12), ii);
			}
			//画一个边框
			g.DrawRectangle(new Pen(Color.Black,0),0,0,image.Width-1,image.Height-1);

			//输出到浏览器
			System.IO.MemoryStream ms = new System.IO.MemoryStream();
			image.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);
			Response.ClearContent();
			Response.ContentType = "image/Jpeg";
			Response.BinaryWrite(ms.ToArray());
			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
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?