通过GDI+绘制 验证码
只为了记录下自己的学习历程,方便日后查看
现在开始言归正传,以下为其完整代码附上
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; namespace _06GDI_绘制验证码
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void pictureBox1_Click(object sender, EventArgs e)
{
//用户生成随机码
Random r = new Random();
//用于遍历验证码的序列
string str="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
//存储验证码
string code = "";
for (int i = ; i < ; i++)
{
//随机从字符串序列中随机生成一个字符,并将其添加到验证码中
code += str[r.Next(,str.Length)]; }
//创建位图对象,Bitmap继承于Image类
Bitmap bitimage = new Bitmap(,);
Graphics gra = Graphics.FromImage(bitimage);
for (int i = ; i < ; i++)
{
//通过点,设置每个字体的宽度
Point point = new Point(i*,);
//字体数组,用于验证码中产生不同随机字体,
string[] fonts = { "幼圆", "宋体", "仿宋", "楷体", "Times New Roman" };
//颜色数组,用于验证码中产生不同颜色的字。
Color[] colors = {Color.Black,Color.Blue,Color.Brown,Color.Chocolate,Color.DarkSlateBlue};
//将生成的验证码字符通过GDI对象绘制出,调用DrawString()方法
gra.DrawString(code[i].ToString(),new Font(fonts[r.Next()],,FontStyle.Bold),new SolidBrush(colors[r.Next()]),point); }
//在验证码上添加部分线,使其不那么清晰 for (int i = ; i < ; i++)
{
Point p1=new Point(r.Next(bitimage.Width),r.Next(bitimage.Height));
Point p2=new Point(r.Next(bitimage.Width),r.Next(bitimage.Height));
Pen pen = new Pen(Brushes.Blue);
gra.DrawLine(pen,p1,p2);//绘制线条
}
//在验证码上添加部分点,使其不那么清晰
for (int i = ; i < ; i++)
{
Point p = new Point(r.Next(bitimage.Width),r.Next(bitimage.Height));
bitimage.SetPixel(p.X, p.Y, Color.Black);//绘制点 }
picCon.Image = bitimage;//将所绘制的验证码添加到picboxs上 }
}
}
GDI+ 绘制验证码


通过GDI+绘制 验证码的更多相关文章
- C#验证码 使用GDI绘制验证码
首先展示一下效果图如下: C#中的GDI特别方便,很多方法我们只要简单的调用就可以实现很复杂的功能.具体实现过程如下: 首先创建一个windows窗体应用(测试使用,实际开发winform程序时在需要 ...
- Winform之GDI绘制验证码
主要功能:点击验证码可更换,输入验证码进行登陆 需要导入命名空间System.Drawing; 产生五位的随机字符串: 1 Random random = new Random(); //产生5个随机 ...
- GDI+在绘制验证码中的使用
GDI+最简单的理解就是用来绘图的.其中包括点.直线.矩形.字符串等等. 先简单来个例子,说明如何在winform窗体中绘制一条直线,并且这条直线不随着窗体的移动而消失. using System; ...
- 利用GDI+在Winfrom绘制验证码
string yzm: private void yangzhengma() { Bitmap bt = new Bitmap(70,22);//创建位图对象 Graphics gs = Graphi ...
- C#利用GDI+绘制旋转文字等效果
C#中利用GDI+绘制旋转文本的文字,网上有很多资料,基本都使用矩阵旋转的方式实现.但基本都只提及按点旋转,若要实现在矩形范围内旋转文本,资料较少.经过琢磨,可以将矩形内旋转转化为按点旋转,不过需要经 ...
- C# 使用GDI+绘制漂亮的MenuStrip和ContextMenuStrip皮肤
通过上面的效果截图可以看到,重绘后的MenuStrip和ContextMenuStrip可以添加自己的LOGO信息,实现了类似OFFICE2007的菜单显示效果. .NET对菜单控件的绘制提供了一个抽 ...
- MFC 用gdi绘制填充多边形区域
MFC 用gdi绘制填充多边形区域 这里的代码是实现一个三角形的绘制,并用刷子填充颜色 在OnPaint()函数里面 运用的是给定的三角形的三个点,很多个点可以绘制多边形 CBrush br(RGB( ...
- GDI绘制时钟效果,与系统时间保持同步,基于Winform
2018年工作之余,想起来捡起GDI方面的技术,特意在RichCodeBox项目中做了两个示例程序,其中一个就是时钟效果,纯C#开发.这个CSharpQuartz是今天上午抽出一些时间,编写的,算是偷 ...
- 『备注』GDI+ 绘制文本有锯齿,透明背景文本绘制
背景: GDI+ 绘制文本 时,如果 背景是透明的 —— 则会出现 锯齿. //其实,我不用这三个 属性 好多年了 //而且,这三个属性 在关键时刻还有可能 帮倒忙 //关键是:这三个属性,鸟用都没有 ...
随机推荐
- jqueryUI弹出框问题
jqueryui dialog中 select选不中或比较慢 dialog = function(Window,dialogDivId,title,buttons,css) { css = css|| ...
- 修改Centos 6.5的yum源
1.进入目录 cd /etc/yum.repos.d/ 2.保持副本 mv CentOS-Base.repo CentOS-Base.repo.backup 3.下载新的CentOS-Base.rep ...
- 利用box-shadow实现伪边框透明到图片
前阵子突然看到了一个效果,一张图片,有一个边框,但是边框可以透明到图片.直接上图 贴代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tr ...
- instanceof运算符
instanceof运算符:判断该对象是否是某一个类的实例. 语法格式:boolean b = 对象A instanceof 类B://判断A对象是否是B类的实例,如果是返回true. 若对象是类的实 ...
- json 构造和解析
目录: (1)引入jar包: (2)json的构造: (3)json的解析: (4)遍历未知key. (1)java对json的处理,可借助org.json.jar. <!-- https:// ...
- 出售Illustrator脚本插件面板(包含面板源码,以及面板上所有的功能源码)
出售Illustrator脚本插件面板(包含面板源码,以及面板上所有的功能源码) 购买后可提供相应的小修改,以及教你使用往这个多列面里再加上按钮功能! 这套源码可作为工作使用,也可用为新手学习AI脚面 ...
- sgu 240 Runaway (spfa)
题意:N点M边的无向图,边上有线性不下降的温度,给固定入口S,有E个出口.逃出去,使最大承受温度最小.输出该温度,若该温度超过H,输出-1. 羞涩的题意 显然N*H的复杂度dp[n][h]表示到达n最 ...
- GridBagConstraints 参数解释
GridBagConstraints 的具体参考为: http://download.oracle.com/technetwork/java/javase/6/docs/zh/api/java/awt ...
- redirect问题
场景如下: 在后台写了一个filter,拦截*.wx的请求,filter内逻辑忽略,最后response.sendRedirect(url)(这个url是相对地址),重定向到另一个页面. 问题来了:一 ...
- SQL 统计两个表的数据,按同一日期分组
思路:把两个表的数据按日期整合到临时表在按日期分组,求和. 例子: SELECT t.dateTime AS '日期',SUM(t.money) AS '表1利息',SUM(t.interest) A ...