源代碼如下: /// /// 驗證碼模塊 /// public class CreateImage { public static void DrawImage() { CreateImage img=new CreateImage(); HttpContext.Current.session["CheckCode"]=img.RndNum(4); img.CreateImages(HttpContext.Current.Session["CheckCode"].ToString()); }
/// /// 生成驗證圖片 /// /// 驗證字符 PRivate void CreateImages(string checkCode) { int iwidth = (int)(checkCode.Length * 13); System.Drawing.Bitmap image = new System.Drawing.Bitmap(iwidth, 23); 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 { 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); HttpContext.Current.Response.ClearContent(); //Response.ClearContent(); HttpContext.Current.Response.ContentType = "image/Jpeg"; HttpContext.Current.Response.BinaryWrite(ms.ToArray()); g.Dispose(); image.Dispose(); }