C#图片验证码绘制
制作验证码.也可以画弧线之类.....
//新建一个网站,在后台代码中引用一个using Stystem.Drawing的命名空间 Bitmap img = new Bitmap(100, 50); //制作一个宽100,高50的画板 Graphics g = Graphics.FromImage(img); //画出背景图 List<Color> clist = new List<Color>();//制作一个新的颜色集合 clist.Add(Color.Red);//制作一个个的颜色内容 clist.Add(Color.Yellow); clist.Add(Color.Blue); clist.Add(Color.Green); clist.Add(Color.Aqua); clist.Add(Color.Orange); clist.Add(Color.Pink); //验证码内容 Random r = new Random();// 创作一个随机数 string ss = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; //写下所有关于验证码的数字跟字母 string s = ""; //写一个空的字符串 //防止字颜色与背景颜色重复 Color bkcolor = clist[r.Next(0, clist.Count)];//挑选一个随机的颜色 clist.Remove(bkcolor);//删除掉这个颜色 g.FillRectangle(new SolidBrush(bkcolor), 0, 0, 100, 50); //设置背景颜色 for (int i = 0; i < 4; i++) { s += ss[r.Next(0, ss.Length)]; //用for循环从ss中挑选4个验证码随机数 } Font f = new Font("微软雅黑", 20); //设置字体大小 Brush b = new SolidBrush(clist[r.Next(0, clist.Count)]); //用上面写的随机颜色定义一个字体颜色 g.DrawString(s, f, b, 5, 5); //画出验证码 Session["YZM"] = s; //设置一个全局验证码.用来验证是否正确 for (var i = 0; i < 5; i++) { Pen pp = new Pen(new SolidBrush(clist[r.Next(0, clist.Count)]), r.Next(1, 3)); //设置一个随机颜色的画笔 Point p1 = new Point(r.Next(0, 100), r.Next(0, 50)); //设置干扰线条的长短 Point p2 = new Point(r.Next(0, 100), r.Next(0, 50)); //设置第二个干扰线条的长短 g.DrawLine(pp, p1, p2); //画线 } img.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg); //画出这一张验证码
忘了写怎么用了
在新建一个网站
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>//用来验证图片里面的验证码 <img id="imgyzm" src="YZM.aspx" />//这个就是刚刚制作好的验证码 <asp:Button ID="Button1" runat="server" Text="验证" /> // 只是一个验证按钮 <asp:Label ID="Label1" runat="server" Text=""></asp:Label>//用来显示是否正确
在这个新建网站后台只需要写一个Button1的点击事件即可
if (TextBox1.Text.ToUpper() == Session["YZM"].ToString().ToUpper()) Label1.Text = "OK"; else Label1.Text = "错误!!!!!!";