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

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

    一、绘制一条直线

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

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

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

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

    

         string yanzheng = "";
public void huantu()
{
//随机生成一个,四个数字的字符串
Random r = new Random();
string str = "";
for (int i = ; i < ; i++)
{
str = str + r.Next(, ).ToString();
}
yanzheng = str;
//创建GDI对象
Bitmap bmp = new Bitmap(100, 30);
Graphics g = Graphics.FromImage(bmp);
int n = ;
//将数字画进图片中,随机的字体,随机的颜色
for (int i = ; i < ; i++)
{
string[] fonts = { "微软雅黑", "宋体", "幼圆", "黑体", "仿宋" };
Color[] colors = { Color.PowderBlue, Color.Green, Color.Blue, Color.Black, Color.Red };
g.DrawString(str[i].ToString(), new Font(fonts[r.Next(, )], , FontStyle.Bold), new SolidBrush(colors[r.Next(, )]), n, );
n += ;
}
//加干扰的点,
for (int i = ; i < ; i++)
{
Point p = new Point(r.Next(0, bmp.Width), r.Next(0, bmp.Height));
28 bmp.SetPixel(p.X, p.Y, Color.Black);
}
//将图片镶嵌picturebox中
pictureBox1.Image = bmp;
}
//看不清,换一张
private void button2_Click(object sender, EventArgs e)
{
huantu();
}
private void button1_Click(object sender, EventArgs e)
{
if (yanzheng==this.textBox1.Text)
{
MessageBox.Show("您输入的验证码正确!","消息提示");
}
else
{
MessageBox.Show("您输入的验证码不正确!", "消息提示");
}
}
}
}

笔记11:GDI 制作数字验证码的更多相关文章

  1. JAVA自学笔记11

    JAVA自学笔记11 1:Eclipse的安装 2:用Eclipse写一个HelloWorld案例,最终在控制台输出你的名字 A:创建项目 B:在src目录下创建包.cn.itcast C:在cn.i ...

  2. GDI+在绘制验证码中的使用

    GDI+最简单的理解就是用来绘图的.其中包括点.直线.矩形.字符串等等. 先简单来个例子,说明如何在winform窗体中绘制一条直线,并且这条直线不随着窗体的移动而消失. using System; ...

  3. 《C++ Primer Plus》学习笔记11

    <C++ Primer Plus>学习笔记11 第17章 输入.输出和文件 <<<<<<<<<<<<<< ...

  4. 机器学习实战 - 读书笔记(11) - 使用Apriori算法进行关联分析

    前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第11章 - 使用Apriori算法进行关联分析. 基本概念 关联分析(associat ...

  5. Ext.Net学习笔记11:Ext.Net GridPanel的用法

    Ext.Net学习笔记11:Ext.Net GridPanel的用法 GridPanel是用来显示数据的表格,与ASP.NET中的GridView类似. GridPanel用法 直接看代码: < ...

  6. highestAvailable比较灵活,毕竟大多数功能不需要系统最高权限(四种方法:屏蔽UAC,右键以管理员身份运行,增加manisfest,制作数字证书)

    打开VS2005.VS2008.VS2010工程,查看工程文件夹中的Properties文件夹下是否有app.manifest这个文件:如没有,按如下方式创建:鼠标右击工程在菜单中选择“属性”,点击工 ...

  7. SQL反模式学习笔记11 限定列的有效值

    目标:限定列的有效值,将一列的有效字段值约束在一个固定的集合中.类似于数据字典. 反模式:在列定义上指定可选值 1. 对某一列定义一个检查约束项,这个约束不允许往列中插入或者更新任何会导致约束失败的值 ...

  8. python之使用PIL模块制作随机验证码

    制作随机验证码,需要如下知识点: 1.随机验证码的制作(这里用的是random模块随机产生字符) 2.图片的制作 3.随机直线干扰项 4.其他随机干扰项 代码如下: from PIL import I ...

  9. golang学习笔记11 golang要用jetbrain的golang这个IDE工具开发才好

    golang学习笔记11   golang要用jetbrain的golang这个IDE工具开发才好  jetbrain家的全套ide都很好用,一定要dark背景风格才装B   从File-->s ...

随机推荐

  1. TCP/IP协议简介

    计算机网络是什么? 简单地理解,计算机网络的任务就是传输数据.为了完成这一复杂的任务,国际标准化组织ISO提供了OSI参考模型,这种模型把互联网网络氛围7层,分别是物理层.数据链路层.网络层.传输层. ...

  2. oracle 触发器实现主键自增

    drop table book; --创建表 create table book( bookId varchar2() primary key, name varchar2() ); --创建序列 c ...

  3. c# SendMail

    using System; using System.Collections.Generic; using System.Net; using System.Net.Mail; using Syste ...

  4. Cheatsheet: 2013 11.01 ~ 11.11

    Other Back To Basics: Hashtables – Part2 How To Make A Game Part 1:Picking a Framework Modern Garbag ...

  5. SQLServer: 解决“错误15023:当前数据库中已存在用户或角色

    解决SQL Server 2008 错误15023:当前数据库中已存在用户或角色,SQLServer2008,错误15023, 在使用SQL Server 2008时,我们经常会遇到一个情况:需要把一 ...

  6. 关于HTTP GET请求的url中文参数编码

    场景:前端用JS构造了一个GET请求,携带了一个中文的参数,通过Spring MVC传到后台以后解析中文是乱码. 1. 发送请求,从浏览器中捕获到http的请求内容如下: Remote Address ...

  7. ABAP WRITE、WRITE TO、FORMAT语句

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  8. js 小数相加异常

    var a = 0.1; var b = 0.2; a + b//0.30000000000000004 这个bug可能是因为二进制计算溢出导致的. 解决办法:将小数转换为整数进行计算 计算后结果除以 ...

  9. 关于ASP.NET的web.config的小笔记

    在ASP和MVC开发中,有一些参数是需要活动更改的,最常见的就是数据库的链接字符串<connectionStrings>节点下配置的.在今天接触的项目中,我又接触到了自定义配置参数,就是可 ...

  10. iOS开发之 在release版本禁止输出NSLog内容

    因为NSLog的输出还是比较消耗系统资源的,而且输出的数据也可能会暴露出App里的保密数据,所以发布正式版时需要把这些输出全部屏蔽掉. 我们可以在发布版本前先把所有NSLog语句注释掉,等以后要调试时 ...