通过GDI+绘制 验证码

本文介绍了一种使用GDI+技术实现的验证码绘制方法。该方法通过生成随机字符并利用不同字体和颜色来提高安全性。此外,还在验证码图片上添加了干扰线和点,以增加破解难度。

只为了记录下自己的学习历程,方便日后查看

现在开始言归正传,以下为其完整代码附上

 1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel;
 4 using System.Data;
 5 using System.Drawing;
 6 using System.Linq;
 7 using System.Text;
 8 using System.Threading.Tasks;
 9 using System.Windows.Forms;
10 
11 namespace _06GDI_绘制验证码
12 {
13     public partial class Form1 : Form
14     {
15         public Form1()
16         {
17             InitializeComponent();
18         }
19 
20         private void pictureBox1_Click(object sender, EventArgs e)
21         {
22             //用户生成随机码
23             Random r = new Random();
24             //用于遍历验证码的序列
25             string str="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
26             //存储验证码
27             string code = "";
28             for (int i = 0; i < 5; i++)
29             {
30                 //随机从字符串序列中随机生成一个字符,并将其添加到验证码中
31                 code += str[r.Next(0,str.Length)];
32 
33             }
34             //创建位图对象,Bitmap继承于Image类
35             Bitmap bitimage = new Bitmap(140,30);
36             Graphics gra = Graphics.FromImage(bitimage);
37             for (int i = 0; i < 5; i++)
38             {
39                 //通过点,设置每个字体的宽度
40                 Point point = new Point(i*20,0);
41                 //字体数组,用于验证码中产生不同随机字体,
42                 string[] fonts = { "幼圆", "宋体", "仿宋", "楷体", "Times New Roman" };
43                 //颜色数组,用于验证码中产生不同颜色的字。
44                 Color[] colors = {Color.Black,Color.Blue,Color.Brown,Color.Chocolate,Color.DarkSlateBlue};
45                 //将生成的验证码字符通过GDI对象绘制出,调用DrawString()方法
46                 gra.DrawString(code[i].ToString(),new Font(fonts[r.Next(5)],25,FontStyle.Bold),new SolidBrush(colors[r.Next(5)]),point);
47 
48             }
49             //在验证码上添加部分线,使其不那么清晰
50            
51             for (int i = 0; i < 30; i++)
52             {
53                 Point p1=new Point(r.Next(bitimage.Width),r.Next(bitimage.Height));
54                 Point p2=new Point(r.Next(bitimage.Width),r.Next(bitimage.Height));
55                 Pen pen = new Pen(Brushes.Blue);
56                 gra.DrawLine(pen,p1,p2);//绘制线条
57             }
58             //在验证码上添加部分点,使其不那么清晰
59             for (int i = 0; i < 30; i++)
60             {
61                 Point p = new Point(r.Next(bitimage.Width),r.Next(bitimage.Height));
62                 bitimage.SetPixel(p.X, p.Y, Color.Black);//绘制点
63 
64             }
65                 picCon.Image = bitimage;//将所绘制的验证码添加到picboxs上
66               
67             
68            
69         }
70     }
71 }
GDI+ 绘制验证码

 

以下为运行结果图

 

转载于:https://www.cnblogs.com/dwj2012/p/5301443.html

乐播投屏是一款简单好用、功能强大的专业投屏软件,支持手机投屏电视、手机投电脑、电脑投电视等多种投屏方式。 多端兼容与跨网投屏:支持手机、平板、电脑等多种设备之间的自由组合投屏,且无需连接 WiFi,通过跨屏技术打破网络限制,扫一扫即可投屏。 广泛的应用支持:支持 10000+APP 投屏,包括综合视频、网盘与浏览器、美韩剧、斗鱼、虎牙等直播平台,还能将央视、湖南卫视等各大卫视的直播内容一键投屏。 高清流畅投屏体验:腾讯独家智能音画调校技术,支持 4K 高清画质、240Hz 超高帧率,低延迟不卡顿,能为用户提供更高清、流畅的视觉享受。 会议办公功能强大:拥有全球唯一的 “超级投屏空间”,扫码即投,无需安装。支持多人共享投屏、远程协作批注,PPT、Excel、视频等文件都能流畅展示,还具备企业级安全加密,保障会议资料不泄露。 多人互动功能:支持多人投屏,邀请好友加入投屏互动,远程也可加入。同时具备一屏多显、语音互动功能,支持多人连麦,实时语音交流。 文件支持全面:支持 PPT、PDF、Word、Excel 等办公文件,以及视频、图片等多种类型文件的投屏,还支持网盘直投,无需下载和转格式。 特色功能丰富:投屏时可同步录制投屏画面,部分版本还支持通过触控屏或电视端外接鼠标反控电脑,以及在投屏过程中用画笔实时标注等功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值