笔记11:GDI 制作数字验证码
大二学长让我学下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 制作数字验证码的更多相关文章
- JAVA自学笔记11
JAVA自学笔记11 1:Eclipse的安装 2:用Eclipse写一个HelloWorld案例,最终在控制台输出你的名字 A:创建项目 B:在src目录下创建包.cn.itcast C:在cn.i ...
- GDI+在绘制验证码中的使用
GDI+最简单的理解就是用来绘图的.其中包括点.直线.矩形.字符串等等. 先简单来个例子,说明如何在winform窗体中绘制一条直线,并且这条直线不随着窗体的移动而消失. using System; ...
- 《C++ Primer Plus》学习笔记11
<C++ Primer Plus>学习笔记11 第17章 输入.输出和文件 <<<<<<<<<<<<<< ...
- 机器学习实战 - 读书笔记(11) - 使用Apriori算法进行关联分析
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第11章 - 使用Apriori算法进行关联分析. 基本概念 关联分析(associat ...
- Ext.Net学习笔记11:Ext.Net GridPanel的用法
Ext.Net学习笔记11:Ext.Net GridPanel的用法 GridPanel是用来显示数据的表格,与ASP.NET中的GridView类似. GridPanel用法 直接看代码: < ...
- highestAvailable比较灵活,毕竟大多数功能不需要系统最高权限(四种方法:屏蔽UAC,右键以管理员身份运行,增加manisfest,制作数字证书)
打开VS2005.VS2008.VS2010工程,查看工程文件夹中的Properties文件夹下是否有app.manifest这个文件:如没有,按如下方式创建:鼠标右击工程在菜单中选择“属性”,点击工 ...
- SQL反模式学习笔记11 限定列的有效值
目标:限定列的有效值,将一列的有效字段值约束在一个固定的集合中.类似于数据字典. 反模式:在列定义上指定可选值 1. 对某一列定义一个检查约束项,这个约束不允许往列中插入或者更新任何会导致约束失败的值 ...
- python之使用PIL模块制作随机验证码
制作随机验证码,需要如下知识点: 1.随机验证码的制作(这里用的是random模块随机产生字符) 2.图片的制作 3.随机直线干扰项 4.其他随机干扰项 代码如下: from PIL import I ...
- golang学习笔记11 golang要用jetbrain的golang这个IDE工具开发才好
golang学习笔记11 golang要用jetbrain的golang这个IDE工具开发才好 jetbrain家的全套ide都很好用,一定要dark背景风格才装B 从File-->s ...
随机推荐
- 【leetcode❤python】Intersection of Two Arrays
#-*- coding: UTF-8 -*- #求两个集合的交集class Solution(object): def intersection(self, nums1, nums2): ...
- CSS hack的写法
css hack简单的说就是由于不同的浏览器,比如Internet Explorer 6,Internet Explorer 7,Mozilla Firefox等,对CSS的解析认识不一样,因此会导致 ...
- JBOSS批量扫描
exploit-db提供出了EXP,如下: /* * JBoss JMXInvokerServlet Remote Command Execution * JMXInvoker.java v0.3 - ...
- python 自动生成C++代码 (代码生成器)
python 代码自动生成的方法 (代码生成器) 遇到的问题 工作中遇到这么一个事,需要写很多C++的底层数据库类,但这些类大同小异,无非是增删改查,如果人工来写代码,既费力又容易出错:而借用pyth ...
- NoSQL数据库的分布式模型
NoSQL数据库的分布式模型 单一服务器 在一个服务器完全能够胜任工作时就没必要考虑分布式,这样部署简单,维护也方便很多: 分片 特点 数据的各个部分存放在集群的不同服务器中: 比如按字母来划分:以a ...
- XAML基础
1.标记扩展 将一个对象的属性值依赖在其他其他对象的某个属性上 用法:标记属性的一般用法是:Attribute = Value,使用标记拓展,Value字符串是由一对花括号及其括起来的内容组成,XAM ...
- mysq错误(1)空用户创建库
mysql5.6.24免安装版: 1.ERROR 1044 (42000): Access denied for user ''@'localhost' to database 现象:创建库失败. 出 ...
- hdu4588Count The Carries
链接 去年南京邀请赛的水题,当时找规律过的,看它长得很像数位dp,试了试用数位dp能不能过,d出每位上有多少个1,然后TLE了..然后用规律优化了前4位,勉强过了. 附数位dp代码及找规律代码. #i ...
- Python学习笔记11—函数
建立第一个函数 /usr/bin/env Python #coding:utf-8 def add_function(a,b): c = a+b print c if __name__==" ...
- hibernate配置文件中的catalog属性
在hibernate表的映射文件中 <hibernate-mapping> <class name="com.sooyie.hibernate.orm.Link&qu ...