摘自:http://blog.csdn.net/durongjian/article/details/4336380

一、创建ValidaeCode类库工程

1、创建ValidaeCode类库工程,在[解决胜方案资源管理器]面板中,右键单击[ValidateCode]节点,并选择[属性]命令。

2、单击[属性]命令,选中[应用程序],半分别把程序集名称和默认命名空间两个属性值设为“ASPNETAJAXWeb.ValidateCode”和“ASPNETAJAXWeb.ValidateCode.Page”。

3、ValidateCode.cs:

using System;
using System.Text;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
using System.IO;
/// <summary>
///ValidateCode 的摘要说明
/// </summary>
namespace ASPNETAJAXWeb.ValidateCode.Page
{public class ValidateCode : System.Web.UI.Page{private const double IMAGELENGTHBASE = 12.5;private const int IMAGEHEIGTH = 22;private const int IMAGELINENUMBER = 25;private const int IMAGEPOINTNUMBER = 100;public static string VALIDATECODEKEY = "VALIDATECODEKEY";private int length = 4;//验证码的数字个数private string code = string.Empty;public ValidateCode(){////TODO: 在此处添加构造函数逻辑//
        }public int Length{get { return length; }set { length = value; }}public string Code{get { return Code; }}/// <summary>/// 创建随机验证码/// </summary>/// <param name="length"></param>/// <returns></returns>public string CreateCode(int length){if (length <= 0)return string.Empty;Random random = new Random();StringBuilder sbCode = new StringBuilder();for (int i = 0; i < length; i++){sbCode.Append(random.Next(0, 10));}code = sbCode.ToString();Session[VALIDATECODEKEY] = code;return code;}/// <summary>/// 创建验证码的图片和验证码/// </summary>/// <param name="code"></param>public void CreateValidateImage(string code){if (string.IsNullOrEmpty(code) == true)return;Session[VALIDATECODEKEY] = code;Bitmap image = new Bitmap((int)Math.Ceiling((code.Length * IMAGELENGTHBASE)), IMAGEHEIGTH);Graphics g = Graphics.FromImage(image);///随机数生成器Random random = new Random();try{g.Clear(Color.White);///绘制图片的干扰线int x1, x2, y1, y2;for (int i = 0; i < IMAGELINENUMBER; i++){x1 = random.Next(image.Width);x2 = random.Next(image.Height);y1 = random.Next(image.Width);y2 = random.Next(image.Height);}///绘制验证码Font font = new Font("TaHoma", 12, FontStyle.Bold | FontStyle.Italic);LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true);g.DrawString(code, font, brush, 2.0f, 2.0f);///画图片的前景噪音点int x, y;for (int i = 0; i < IMAGEPOINTNUMBER; i++){x = random.Next(image.Width);y = random.Next(image.Height);///绘制点
                    image.SetPixel(x, y, Color.FromArgb(random.Next()));}///
                g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);///
                MemoryStream ms = new MemoryStream();image.Save(ms, ImageFormat.Gif);///
                Response.ClearContent();Response.ContentType = "image/Gif";Response.BinaryWrite(ms.ToArray());}finally{g.Dispose();image.Dispose();}}protected override void OnLoad(EventArgs e){CreateValidateImage(length);}public void CreateValidateImage(int length){code = CreateCode(length);CreateValidateImage(code);}}
}     

View Code

   4、在另外一个ASP.NET应用程序中添加Web窗体页ValidateCode.aspx,并删除该页面的代码隐藏文件(ValidateCode.aspx.cs)

5、删除 ValidateCode.aspx页面的HTML代码,仅仅保留一行使用“@Page”指令的如下代码:

<%@ Page Language="C#" AutoEventWireup="false" Inherits="ASPNETAJAXWeb.ValidateCode.Page.ValidateCode" %>

6、使用图文验证页面:把 ValidateCode.aspx页面复制到要使用该页面的ASP.NET应用程序中,使用引用的方法把程序集添加到Bin目录下,在使用验证码的页面上添加一下Image控件,并将该控件的ImageUrl属性的值设置为ValidateCode.aspx。

<asp:Image ID="Image1" runat="server" ImageUrl="~/ValidateCode.aspx" />

7、可通过判断Session["VALIDATECODEKEY"]与用户所输入的值是否相等检查用户输入的验证码是否正确。

.net完整的图文验证相关推荐

  1. php账号登录验证手机号码,最完整的php验证手机号码

    最完整的php验证手机号码: 移动:134.135.136.137.138.139.150.151.152.157.158.159.182.183.184.187.188.178(4G).147(上网 ...

  2. 【PyTorch教程】P32 完整的模型验证套路

    P32 完整的模型验证套路 利用已经训练好的模型,给他一个输入,进行测试: 实际验证过程: -报错处理:在gpu上训练的结果,想要用在cpu电脑上,做test,需要第38行,这一步叫:做映射(map) ...

  3. 最完整的php验证手机号码

    最完整的php验证手机号码: 移动:134.135.136.137.138.139.150.151.152.157.158.159.182.183.184.187.188.178(4G).147(上网 ...

  4. UVM学习之路(5)— 完整的UVM验证平台

    UVM学习之路(5)- 完整的UVM验证平台 一.前言 一个完整的UVM验证平台还应该加入寄存器模型,对应的设计文件中也应该存在寄存器及其控制端口, 通过该控制端口可以配置DUT中的寄存器. 二.设计 ...

  5. java1.8 离线下载安装_JDK1.8下载与安装(完整的图文教程)

    JDK1.8下载与安装(完整的图文教程): 今天,我们就一步一步(图片+文字)带领大家下载和安装. 1.jdk1.8的下载 2.jdk1.8的安装 一.JDK下载 两种方法,第一种是从官网下载:第二种 ...

  6. 腾讯云备案流程完整步骤图文教程

    前面写了阿里云域名备案的教程,有好多童鞋是腾讯云域名,虽然备案流程大致相同,但是好多童鞋操作起来觉着有困难,所以今天利用闲暇,写了这篇腾讯云域名备案(首次备案)图文教程,希望能解决您的备案问题. 一. ...

  7. 蓝创图文验证示例代码

    1.注册激活产品 chuagnlan.com 注册账号,进行认证,并激活 公共数据->图文验证码产品 创蓝云智-全面的API数据接口 2.获取验证码账号 联系万数对接技术,申请验证码账号 App ...

  8. 前端js正则验证大全(一套完整的正则验证解决方案)@莫成尘

    先看代码,复制使用即可,验证基于前端常用的正则验证而来.(个人习惯用驼峰命名,请见谅) 如您满意请给莫成尘点个Fabulous 手机号验证 思路是以1开头的第二位是23456789,匹配数字字符9位并 ...

  9. 一个完整的schema验证xml的样例

    xml文件: <reference xmlns="http://www.w3school.com.cn" xmlns:xsi="http://www.w3.org/ ...

最新文章

  1. 2018.3.15校内互测总结-点分治-线段树
  2. C语言按两个字节读写二进制文件,C语言 读写二进制文件(示例代码)
  3. 中文转换成阿拉伯数字
  4. Python使用struct处理二进制
  5. 论文笔记——PRUNING FILTERS FOR EFFICIENT CONVNETS
  6. linux最简单的查杀病毒,linux查杀病毒的几个思路
  7. 《leetcode》two-sum
  8. delphi 提取字符中的数字
  9. mysql用户权限重置_mysql中重置密码与新用户权限分配的方法介绍
  10. cesium米转换经纬度_Cesium 坐标系转换
  11. AJAX基础知识点——思维导图
  12. Mysql常用操作2
  13. 读Ext之九(事件管理)
  14. CSS/HTML/JS
  15. python构造icmp数据包_Python原始套接字未接收ICMP数据包
  16. WPF打开pdf文件
  17. virtualbox安装.img文件
  18. 免费edu邮箱申请注册地址
  19. 中兴通讯2013校招软件笔试题
  20. 多重利好袭来,“东数西算”的背后意义深远

热门文章

  1. 07-09-Exchange Server 2019-配置-Outlook 2019
  2. Mac 下 IDEA 启动慢的问题
  3. 解决:无法创建该DNS 服务器的委派
  4. Lisp 家族迎来新成员,函数式语言 Lux 是什么?
  5. RHEL/CentOS/OEL5/6.x高危漏洞修补
  6. Andriod使用webview控件往APP里内嵌网页
  7. 122112_1452_Word1
  8. iphone开发UITable内嵌不同风格Table
  9. linux secureCRT 显示中文乱码
  10. python 列表维度_如何输出python中list的维度