學習筆記:利用GDI+生成簡單的驗證碼圖片

1 /// <summary> 2 /// 單擊圖片時切換圖片 3 /// </summary> 4 /// <param name="sender"></param> 5 /// <param name="e"></param> 6 PRivate void pictureBox1_Click(object sender, EventArgs e) 7 { 8 Random r = new Random(); 9 string str = string.Empty;10 //生成5位隨機數如 9053111 for (int i = 0; i < 5; i++)12 {13 str += r.Next(0, 10);14 }15 Bitmap bitmap = new Bitmap(150, 40);16 Graphics g = Graphics.FromImage(bitmap);17 //預定義幾種字體樣式和顏色18 string[] fonts = { "微軟雅黑", "宋體", "黑體", "隸書", "仿宋" };19 Color[] colors = { Color.Yellow, Color.Blue, Color.Black, Color.Red, Color.Orange };20 //因為每一數字的字體和顏色可能不同,21 //因此循環將生成的隨機數每一數字繪制到圖片22 for (int i = 0; i < str.Length; i++)23 {24 Point p = new Point(i * 30, 0);25 g.DrawString(str[i].ToString(), new Font(fonts[r.Next(0, 5)], 20, FontStyle.Bold), new SolidBrush(colors[r.Next(0, 5)]), p);26 }27 //循環在圖片范圍內繪制出50條線28 for (int i = 0; i < 50; i++)29 {30 //保證線的起始點都在圖片范圍內31 Point p1 = new Point(r.Next(0, bitmap.Width), r.Next(0, bitmap.Height));32 Point p2 = new Point(r.Next(0, bitmap.Width), r.Next(0, bitmap.Height));33 g.DrawLine(new Pen(Brushes.Green), p1, p2);34 }35 //添加一些像素點36 for (int i = 0; i < 300; i++)37 {38 Point p1 = new Point(r.Next(0, bitmap.Width), r.Next(0, bitmap.Height));39 bitmap.SetPixel(p1.X, p1.Y, Color.Green);40 }41 //在winForm中用PictureBox中顯示出來42 pictureBox1.Image = bitmap;43 }View Code
最終效果如下
新聞熱點
疑難解答