大二学长让我学下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. 【leetcode❤python】Intersection of Two Arrays

    #-*- coding: UTF-8 -*- #求两个集合的交集class Solution(object):    def intersection(self, nums1, nums2):     ...

  2. CSS hack的写法

    css hack简单的说就是由于不同的浏览器,比如Internet Explorer 6,Internet Explorer 7,Mozilla Firefox等,对CSS的解析认识不一样,因此会导致 ...

  3. JBOSS批量扫描

    exploit-db提供出了EXP,如下: /* * JBoss JMXInvokerServlet Remote Command Execution * JMXInvoker.java v0.3 - ...

  4. python 自动生成C++代码 (代码生成器)

    python 代码自动生成的方法 (代码生成器) 遇到的问题 工作中遇到这么一个事,需要写很多C++的底层数据库类,但这些类大同小异,无非是增删改查,如果人工来写代码,既费力又容易出错:而借用pyth ...

  5. NoSQL数据库的分布式模型

    NoSQL数据库的分布式模型 单一服务器 在一个服务器完全能够胜任工作时就没必要考虑分布式,这样部署简单,维护也方便很多: 分片 特点 数据的各个部分存放在集群的不同服务器中: 比如按字母来划分:以a ...

  6. XAML基础

    1.标记扩展 将一个对象的属性值依赖在其他其他对象的某个属性上 用法:标记属性的一般用法是:Attribute = Value,使用标记拓展,Value字符串是由一对花括号及其括起来的内容组成,XAM ...

  7. mysq错误(1)空用户创建库

    mysql5.6.24免安装版: 1.ERROR 1044 (42000): Access denied for user ''@'localhost' to database 现象:创建库失败. 出 ...

  8. hdu4588Count The Carries

    链接 去年南京邀请赛的水题,当时找规律过的,看它长得很像数位dp,试了试用数位dp能不能过,d出每位上有多少个1,然后TLE了..然后用规律优化了前4位,勉强过了. 附数位dp代码及找规律代码. #i ...

  9. Python学习笔记11—函数

    建立第一个函数 /usr/bin/env Python #coding:utf-8 def add_function(a,b): c = a+b print c if __name__==" ...

  10. hibernate配置文件中的catalog属性

    在hibernate表的映射文件中 <hibernate-mapping>    <class name="com.sooyie.hibernate.orm.Link&qu ...