|
|
生成复杂的彩色验证码[C#] |
|
|
private void CreateImage(string checkCode) { int iwidth = (int)(checkCode.Length * 15); System.Drawing.Bitmap image = new System.Drawing.Bitmap(iwidth, 25); 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(); }
缺缺 发表于 2004-11-28 [所属栏目: .Net | 返回首页]
|
|
|