using System; using System.Collections.Generic; using System.Web; using System.Web.Security; using System.Web.SessionState; using System.Drawing; using System.Drawing.Imaging; namespace Mtxfw.VipSite { /// /// 验证码 by Telesa 2011.04.07 /// public class CheckCode : IHttpHandler, IRequiresSessionState { public void ProcessRequest(HttpContext context) { string strNum = RandNum(4); context.Session["GLRandNum"] = strNum; ValidateCode(strNum, 60, 25, "Arial", 12, "#FFFFFF"); } /// /// 生成指定位数的随机数 /// /// 参数是随机数的位数 /// 返回一个随机数字符串 public string RandNum(int VcodeNum) { Random random = new Random(); if (VcodeNum == 6) { return (random.Next(100000, 999999).ToString()); } else { return (random.Next(1000, 9999).ToString()); } } /// /// 生成图片并写入字符 /// /// 目标字符 /// 宽 /// 高 /// 字体文件 /// 字体大小 /// 图片背景颜色 private void ValidateCode(string VNum, int w, int h, string font, int fontSize, string bgColor) { //生成图像的实例 Bitmap Img = new Bitmap(w, h); //从Img对象生成新的Graphics对象 Graphics g = Graphics.FromImage(Img); //背景颜色 g.Clear(ColorTranslator.FromHtml(bgColor)); //生成Font类的实例 Font f = new Font(font, fontSize, FontStyle.Italic|FontStyle.Bold); //生成笔刷类的实例 SolidBrush s = new SolidBrush(Color.Red); //将VNum写入图片中 g.DrawString(VNum, f, s, 3, 3); //将此图像以Jpeg图像文件的格式保存到流中 Img.Save(System.Web.HttpContext.Current.Response.OutputStream, ImageFormat.Jpeg); System.Web.HttpContext.Current.Response.ContentType = "image/Jpeg"; g.Dispose(); Img.Dispose(); System.Web.HttpContext.Current.Response.End(); } public bool IsReusable { get { return false; } } } }