大二学长让我学下GDI绘制验证码,然后自己就试了试了。找了点视频看了下。

    现在会画直线,矩形,字符串,制作验证码

    一、绘制一条直线

1         private void button1_Click(object sender, EventArgs e)
2         {
3             Graphics g = this.CreateGraphics();     //实例化
4             Pen pen = new Pen(Color.Black);         //创建一只笔,颜色
5             Point p1 = new Point(20, 30);           //两点确定一条直线
6             Point p2 = new Point(100,200);
7             g.DrawLine(pen,p1,p2);                  //画直线了
8         }

    二、绘制一个矩形,一个字符串

1         private void button2_Click(object sender, EventArgs e)
2         {
3             Graphics j = this.CreateGraphics();
4             Pen pen = new Pen(Color.YellowGreen);
5
6             j.DrawRectangle(pen,20,20,250,250);     //矩形
7             j.DrawString("管星,还蛮不错的!",new Font("宋体",20,FontStyle.Bold),Brushes.Red,50,50);  //字符串
8         }

    三、制作验证码,和字符串升级版

    

 1         string yanzheng = "";
 2         public void huantu()
 3         {
 4             //随机生成一个,四个数字的字符串
 5             Random r = new Random();
 6             string str = "";
 7             for (int i = 0; i < 4; i++)
 8             {
 9                 str = str + r.Next(0, 10).ToString();
10             }
11             yanzheng = str;
12             //创建GDI对象
13             Bitmap bmp = new Bitmap(100, 30);
14             Graphics g = Graphics.FromImage(bmp);
15             int n = 10;
16             //将数字画进图片中,随机的字体,随机的颜色
17             for (int i = 0; i < 4; i++)
18             {
19                 string[] fonts = { "微软雅黑", "宋体", "幼圆", "黑体", "仿宋" };
20                 Color[] colors = { Color.PowderBlue, Color.Green, Color.Blue, Color.Black, Color.Red };
21                 g.DrawString(str[i].ToString(), new Font(fonts[r.Next(0, 5)], 20, FontStyle.Bold), new SolidBrush(colors[r.Next(0, 5)]), n, 0);
22                 n += 20;
23             }
24             //加干扰的点,
25             for (int i = 0; i < 500; i++)
26             {
27                 Point p = new Point(r.Next(0, bmp.Width), r.Next(0, bmp.Height));
28                 bmp.SetPixel(p.X, p.Y, Color.Black);
29             }
30             //将图片镶嵌picturebox中
31             pictureBox1.Image = bmp;
32         }
33         //看不清,换一张
34         private void button2_Click(object sender, EventArgs e)
35         {
36             huantu();
37         }
38         private void button1_Click(object sender, EventArgs e)
39         {
40             if (yanzheng==this.textBox1.Text)
41             {
42                 MessageBox.Show("您输入的验证码正确!","消息提示");
43             }
44             else
45             {
46                 MessageBox.Show("您输入的验证码不正确!", "消息提示");
47             }
48         }
49     }
50 }

转载于:https://www.cnblogs.com/gx-143/p/5415906.html

笔记11:GDI 制作数字验证码相关推荐

  1. 按键精灵+大漠插件简单数字验证码识别实践笔记

    因为资源短缺,公司用了一个很老的系统分配资源,每个项目每天都要经历上演一次像抢火车票一样的经历,而往往又空手而归,搞得大家疲惫不堪.而其中的关键在于几个简单的数字验证码的识别,于是在业余时间看了一些验 ...

  2. 数字信号处理翻转课堂笔记11

    数字信号处理翻转课堂笔记11 The Flipped Classroom11 of DSP 对应教材:<数字信号处理(第五版)>西安电子科技大学出版社,丁玉美.高西全著 一.要点 1.数字 ...

  3. Java制作数字加减法验证码

    Java制作数字加法验证码 简介 验证码(CAPTCHA)是"Completely Automated Public Turing test to tell Computers and Hu ...

  4. U3D笔记11:47 2016/11/30-15:15 2016/12/19

    U3D笔记11:47 2016/11/30-15:15 2016/12/19 技术BLOG:http://www.unity.5helpyou.com/2373.html#comment-43108 ...

  5. Cookie和Session-学习笔记04【Session之验证码案例】

    Java后端 学习路线 笔记汇总表[黑马程序员] Cookie和Session-学习笔记01[Cookie_快速入门.Cookie_细节] Cookie和Session-学习笔记02[Cookie案例 ...

  6. 【Python5】图像操作,数字验证码识别,图像拼接/保存器

    文章目录 1.安装 2.画图 3.几何变换 3.1 位计算 3.2 遮挡 3.3 通道切分合并 3.4 金字塔 3.5 缩放 3.6 平移 3.7 旋转 3.8 仿射变换 3.9 透视变换 4.形态学 ...

  7. Hadoop学习笔记—11.MapReduce中的排序和分组

    Hadoop学习笔记-11.MapReduce中的排序和分组 一.写在之前的 1.1 回顾Map阶段四大步骤 首先,我们回顾一下在MapReduce中,排序和分组在哪里被执行: 从上图中可以清楚地看出 ...

  8. 《剑指 Offer I》刷题笔记 11 ~ 19 题

    <剑指 Offer I>刷题笔记 11 ~ 19 题 查找算法(中等) 11. 二维数组中的查找 _解法 1:暴力迭代 解法 2:标志数 解法 3:逐行二分 12. 旋转数组的最小数字 _ ...

  9. php验证注册不能纯数字,php写一个纯数字验证码教学

    现在来说说简单的纯数字验证码吧. 如果是初学者,建议按照我代码的注释 //数字 一步步来.最简单的方法,还是把整个代码复制走了. 新建一个captcha.php: <?php //11>设 ...

最新文章

  1. 数据中心成“香饽饽”:阿里云未来再投2000亿,板块内掀起涨停潮
  2. 【PAT】A1053 Path of Equal Weight
  3. python只能使用内置数据库_隐藏彩蛋:你知道python有一个内置的数据库吗?
  4. wxWidgets随笔(13)-wxBoxSizer类Basic Box Sizer(2)
  5. c语言中判断输入是否为数字_C 判断
  6. 微软Edge扩展工具箱旨在将Chrome扩展带至Edge
  7. javascript运动学教程
  8. PHP好玩的代码一(笛卡尔的情书)
  9. Java并发编程框架Disruptor
  10. html引入html include_PostgreSQL引入插件EXTENSION的常用方法
  11. 洛谷 P2437 蜜蜂路线
  12. JDY-31蓝牙模块测试
  13. MB/s MiB/s之间换算
  14. 基于android的酒店客房预订客户端app
  15. java实现路由器重启_java 重启路由器
  16. 人工神经网络:径向基函数神经网络
  17. android之网络请求 -- 获取RecyclerView的列表项(图片 + 文字)
  18. OpenFoam编程笔记——starccm网格转openfoam格式
  19. 残疾人竞赛计算机程序,第五届全国残疾人职业技能竞赛竞赛标准计算机程序.doc...
  20. 【IO】Java 的 BIO、NIO 区别对比

热门文章

  1. python随机读取字符_利用python3随机生成中文字符的实现方法
  2. mysql connector api_mysql8 参考手册-Connector/J使用X DevAPI进行连接压缩
  3. 状态机fsm_Verilog专题(三十二)101 Sequence Recognition Mealy FSM(101序列识别状态机)...
  4. 联想面试智力题,听说前面三道题必考(有部份解答)
  5. Java实训项目12:GUI学生信息管理系统 - 实现步骤 - 创建服务接口实现类
  6. 无心剑中译马塞尔·普鲁斯特《追忆似水年华》
  7. 英语学习笔记2019-10-11
  8. 二叉树C++ | 广度优先遍历(层级顺序遍历)_2
  9. TTU智能配电终端_智能配电终端规模化建设及应用
  10. 2017.9.8 线性代数 失败总结