笔记11:GDI 制作数字验证码
大二学长让我学下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 制作数字验证码相关推荐
- 按键精灵+大漠插件简单数字验证码识别实践笔记
因为资源短缺,公司用了一个很老的系统分配资源,每个项目每天都要经历上演一次像抢火车票一样的经历,而往往又空手而归,搞得大家疲惫不堪.而其中的关键在于几个简单的数字验证码的识别,于是在业余时间看了一些验 ...
- 数字信号处理翻转课堂笔记11
数字信号处理翻转课堂笔记11 The Flipped Classroom11 of DSP 对应教材:<数字信号处理(第五版)>西安电子科技大学出版社,丁玉美.高西全著 一.要点 1.数字 ...
- Java制作数字加减法验证码
Java制作数字加法验证码 简介 验证码(CAPTCHA)是"Completely Automated Public Turing test to tell Computers and Hu ...
- 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 ...
- Cookie和Session-学习笔记04【Session之验证码案例】
Java后端 学习路线 笔记汇总表[黑马程序员] Cookie和Session-学习笔记01[Cookie_快速入门.Cookie_细节] Cookie和Session-学习笔记02[Cookie案例 ...
- 【Python5】图像操作,数字验证码识别,图像拼接/保存器
文章目录 1.安装 2.画图 3.几何变换 3.1 位计算 3.2 遮挡 3.3 通道切分合并 3.4 金字塔 3.5 缩放 3.6 平移 3.7 旋转 3.8 仿射变换 3.9 透视变换 4.形态学 ...
- Hadoop学习笔记—11.MapReduce中的排序和分组
Hadoop学习笔记-11.MapReduce中的排序和分组 一.写在之前的 1.1 回顾Map阶段四大步骤 首先,我们回顾一下在MapReduce中,排序和分组在哪里被执行: 从上图中可以清楚地看出 ...
- 《剑指 Offer I》刷题笔记 11 ~ 19 题
<剑指 Offer I>刷题笔记 11 ~ 19 题 查找算法(中等) 11. 二维数组中的查找 _解法 1:暴力迭代 解法 2:标志数 解法 3:逐行二分 12. 旋转数组的最小数字 _ ...
- php验证注册不能纯数字,php写一个纯数字验证码教学
现在来说说简单的纯数字验证码吧. 如果是初学者,建议按照我代码的注释 //数字 一步步来.最简单的方法,还是把整个代码复制走了. 新建一个captcha.php: <?php //11>设 ...
最新文章
- 数据中心成“香饽饽”:阿里云未来再投2000亿,板块内掀起涨停潮
- 【PAT】A1053 Path of Equal Weight
- python只能使用内置数据库_隐藏彩蛋:你知道python有一个内置的数据库吗?
- wxWidgets随笔(13)-wxBoxSizer类Basic Box Sizer(2)
- c语言中判断输入是否为数字_C 判断
- 微软Edge扩展工具箱旨在将Chrome扩展带至Edge
- javascript运动学教程
- PHP好玩的代码一(笛卡尔的情书)
- Java并发编程框架Disruptor
- html引入html include_PostgreSQL引入插件EXTENSION的常用方法
- 洛谷 P2437 蜜蜂路线
- JDY-31蓝牙模块测试
- MB/s MiB/s之间换算
- 基于android的酒店客房预订客户端app
- java实现路由器重启_java 重启路由器
- 人工神经网络:径向基函数神经网络
- android之网络请求 -- 获取RecyclerView的列表项(图片 + 文字)
- OpenFoam编程笔记——starccm网格转openfoam格式
- 残疾人竞赛计算机程序,第五届全国残疾人职业技能竞赛竞赛标准计算机程序.doc...
- 【IO】Java 的 BIO、NIO 区别对比
热门文章
- python随机读取字符_利用python3随机生成中文字符的实现方法
- mysql connector api_mysql8 参考手册-Connector/J使用X DevAPI进行连接压缩
- 状态机fsm_Verilog专题(三十二)101 Sequence Recognition Mealy FSM(101序列识别状态机)...
- 联想面试智力题,听说前面三道题必考(有部份解答)
- Java实训项目12:GUI学生信息管理系统 - 实现步骤 - 创建服务接口实现类
- 无心剑中译马塞尔·普鲁斯特《追忆似水年华》
- 英语学习笔记2019-10-11
- 二叉树C++ | 广度优先遍历(层级顺序遍历)_2
- TTU智能配电终端_智能配电终端规模化建设及应用
- 2017.9.8 线性代数 失败总结