笔记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 ...
随机推荐
- iOS深入学习:(UITableView系列3:insertRow)
前面一篇博客,我使用了reloadData来刷新界面,但是这样没有动画效果,那么我这里通过insertRowsAtIndexPaths:withRowAnimation设置动画效果,希望对大家有所帮助 ...
- Python 字符编码 zz
http://www.cnblogs.com/huxi/archive/2010/12/05/1897271.html 1. 字符编码简介 1.1. ASCII ASCII(American Stan ...
- Java_JDK_TreeMap
(一)TreeMap TreeMap使用的是红黑树来实现的,所以重点是红黑树的插入和删除. 红黑树的3个特性: 根节点和所有外部节点的颜色都是黑色的: 从根节点到外部节点的途中没有连续两个节点的颜色是 ...
- 并行parallel和并发concurrent的区别
http://stackoverflow.com/questions/1050222/concurrency-vs-parallelism-what-is-the-difference Concurr ...
- How To PLAY_SOUND in Oracle Forms
Play_sound is used to play audio files in Oracle Forms, Play_Sound plays the sound object in the spe ...
- HDU 5038 Grade(分级)
Description 题目描述 Ted is a employee of Always Cook Mushroom (ACM). His boss Matt gives him a pack of ...
- hdu 4123 Bob’s Race 树的直径+rmq+尺取
Bob’s Race Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Probl ...
- Android简单登陆页面
布局: 线性布局+相对布局 日志打印: 利用LogCat和System.out.println打印观察. Onclick事件是采用过的第四种: 在配置文件中给Button添加点击时间 涉及知识: 通过 ...
- shell script的连接符是逗号,不是英文的句号
举个例子: gawk 'BEGIN{ var[ var[ var[ var[ asort(var,test) for(i in test) print ] }' 这时候敲回车就能输出 Index: - ...
- iOS - UIGestureRecognizer
前言 NS_CLASS_AVAILABLE_IOS(3_2) @interface UIGestureRecognizer : NSObject @available(iOS 3.2, *) publ ...