到网上收一个第三方控件,控件名是:WebValidates.dll. 编码思路: 1、首先生成一个随机字符串。 2、然后将随机字符 串保存进session或者cookie中。用于输入时比较。 3、然后将随机字符画在图片中,最后将图片保存在流中。就可以了。 protected void Page_Load(object sender, EventArgs e) { string tmp = RndNum(4); HttpCookie a = new HttpCookie("ImageV", tmp); Response.Cookies.Add(a); this.ValidateCode(tmp);
} //将生成的随机数画图并保存在输出流中 private void ValidateCode(string VNum) { int gwidth = VNum.Length * 12; //定义一个位图,并设置高和宽 Bitmap Img = new Bitmap(gwidth, 25); //定义一个画布 Graphics g = Graphics.FromImage(Img); //背景颜色 g.Clear(Color.LightSteelBlue); //文字字体 Font f = new Font("Arial Black", 10); //文字颜色 SolidBrush s = new SolidBrush(Color.RoyalBlue); //将vnum画在位图中 g.DrawString(VNum, f, s, 3, 3);
//定义输出类型 Response.ContentType = "image/jpeg"; //将位图保存在输出流中 Img.Save(Response.OutputStream, ImageFormat.Jpeg); Img.Dispose(); Response.End(); }
/// <summary> /// 生成四位随机数 /// </summary> /// <param name="VcodeNum"></param> /// <returns></returns> private string RndNum(int VcodeNum) { string Vchar = "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"; string[] VcArray = Vchar.Split(','); string VNum = "";
Random rand = new Random(DateTime.Now.Millisecond);
for (int i = 0; i < VcodeNum; i++) { int t = rand.Next(35); VNum += VcArray[t]; } return VNum; }
//在其他页面调用时,只需要<img src="页面的路径"/>
开源时代的到来,对与技术人员是一个巨大的考验
QQ:876162454
|