標籤:abc count 字元 graph mat class win 關於 刪除
製作驗證碼.也可以畫弧線之類.....
//建立一個網站,在後台代碼中引用一個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); //畫出這一張驗證碼
C#圖片驗證碼繪製