大二学长让我学下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. bzoj 3234: [Ahoi2013]立方体

    题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3234 题意:求长方体交的表面积. 思路:flood-fill const int ...

  2. Threads in Spring

    使用Spring时经常会问,我们定义的Bean应该是Singleton还是Prototype?多个客户端同时调用Dao层,需要考虑线程安全吗?通过阅读官方文档和Spring的源代码,这类问题的答案是: ...

  3. 【转载】Linux系统启动流程

    原文:Linux系统启动流程 POST(Power On Self Test/上电自检)-->BootLoader(MBR)-->Kernel(硬件探测.加载驱动.挂载根文件系统./sbi ...

  4. CMD方式修改MySQL的root用户密码

    1.CMD下,进行mysql的bin目录下; 2.输入mysql -u root -p,输入旧密码,进入mysql状态: 3.MySQL>use MySQL; 4.update user set ...

  5. Linux链接库四(多个库文件链接顺序问题)

    最近在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误: (.text+0x13): undefined reference to `func' 关于unde ...

  6. 【分享】通过Excel生成批量SQL语句,处理大量数据的好办法

    我们经常会遇到这样的要求:用户给发过来一些数据,要我们直接给存放到数据库里面,有的是Insert,有的是Update等等,少量的数据我们可以采取最原始的办法,也就是在SQL里面用Insert into ...

  7. C#中Application.DoEvents()的作用

    Visual Studio里的摘要:处理当前在消息队列中的所有 Windows 消息. 交出CPU控制权,让系统可以处理队列中的所有Windows消息,比如在大运算量循环内,加Application. ...

  8. 基于jQuery的移动轮播图(支持触屏)

    移动轮播图我看到两款, 一款是无线天猫的m.tmall.com,实现了无缝轮播. 一款是蘑菇街的,没有实现无缝轮播. 我自己重写一个,类似蘑菇街 <!doctype html> <h ...

  9. Lodop在搜狗兼容模式下打印无边框问题

    项目中原有的CAP方式打印由于只支持IE浏览器,由于目前大家使用IE的频率越来越少,迫切需要一个控件来替换项目原有的控件,比较了下选择Lodop,购买了一个最便宜的版本,使用后,有用户使用搜狗的兼容模 ...

  10. Spring AOP执行方法

      execution(* springinaction.springidol.Instrument.play(..)) * 代表返回为任意类型 springinaction.springidol.I ...