学习笔记:利用GDI+生成简单的验证码图片_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 学习笔记:利用GDI+生成简单的验证码图片

学习笔记:利用GDI+生成简单的验证码图片

 2015/1/3 23:04:04  忄去  程序员俱乐部  我要评论(0)
  • 摘要:学习笔记:利用GDI+生成简单的验证码图片1///<summary>2///单击图片时切换图片3///</summary>4///<paramname="sender"></param>5///<paramname="e"></param>6privatevoidpictureBox1_Click(objectsender,EventArgse)7{8Randomr=newRandom()
  • 标签:笔记 学习 图片 利用 学习笔记

学习笔记:利用GDI+生成简单的验证码图片

class="code_img_closed" src="/Upload/Images/2015010323/0015B68B3C38AA5B.gif" alt="" />logs_code_hide('75a94085-99d5-429d-9535-b0c154aaec2a',event)" src="/Upload/Images/2015010323/2B1B950FA3DF188F.gif" alt="" />
 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位随机数如 90531
11             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

 最终效果如下

发表评论
用户名: 匿名