惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
人人都是产品经理
人人都是产品经理
小众软件
小众软件
博客园 - Franky
WordPress大学
WordPress大学
Jina AI
Jina AI
Google DeepMind News
Google DeepMind News
I
InfoQ
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
F
Fortinet All Blogs
博客园 - 【当耐特】
IT之家
IT之家
G
Google Developers Blog
J
Java Code Geeks
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
云风的 BLOG
云风的 BLOG
Recent Announcements
Recent Announcements
有赞技术团队
有赞技术团队
V
Visual Studio Blog
U
Unit 42
阮一峰的网络日志
阮一峰的网络日志
月光博客
月光博客
GbyAI
GbyAI
雷峰网
雷峰网

博客园 - 大牛博客

广东早茶的悠闲时光 用户中心 - 博客园 GridView数据绑定控件和ObjectDataSource数据源控件实现排序功能 - 大牛博客 - 博客园 asp.net 常用字符串过滤方法 非常实用的Asp.net常用的51个代码 - 大牛博客 - 博客园 JS 中面向对象的5钟写法 GridView的RowCommand事件中取得行索引 - 大牛博客 - 博客园 .netframework3.5 中TimeZoneInfo 类的使用 GridView,DataList,Repeater,DetailsView的遍历行代码 - 大牛博客 - 博客园 ASP.NET 2.0上传图片生成缩略图类 合理选择贪婪模式与非贪婪模式 - 大牛博客 - 博客园 揭开正则表达式的神秘面纱 asp.net下载文件 - 大牛博客 - 博客园 C#数据结构之双向链表 C#数据结构之队列 ASP.NET四种页面导航方式之比较与选择 asp.net页面事件执行顺序 中英文字符串截取方法 - 大牛博客 - 博客园 SQL 2005 ROW_NUMBER() 语句分页 | SQL效率最高的分页查询数据
ASP.NET纯数字验证码
大牛博客 · 2009-06-21 · via 博客园 - 大牛博客

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Drawing;
using System.Drawing.Imaging;

public partial class Rnd : System.Web.UI.Page
{
    private int codeLen = 5;//随机显示字符个数
    private int fineness = 85;//图片清晰度
    private int imgWidth = 65;//图片宽度
    private int imgHeight = 20;//图片高度
    private string fontFamily = "Comic Sans MS";//字体名称
    private int fontSize = 12; //字体大小
    private Random random = new Random();
    
    protected void Page_Load(object sender, EventArgs e)
    {
        string validateCode = CreateValidateCode();
        Session["RandomNumber"] = validateCode;
        Bitmap bitmap = new Bitmap(imgWidth, imgHeight);
        DisturbBitmap(bitmap);
        DrawValidateCode(bitmap, validateCode);
        bitmap.Save(Response.OutputStream, ImageFormat.Gif);
    }
    private string CreateValidateCode()//得到随机数
    {
        string validateCode = "";
        for (int i = 0; i < codeLen; i++)
        {
            int n = random.Next(10);//返回一个小于最大值得随机数
            validateCode += n.ToString();
        }
        return validateCode;
    }
    private void DisturbBitmap(Bitmap bitmap)//获取背景图
    {
        for (int i = 0; i < bitmap.Width; i++)
        {
            for (int j = 0; j < bitmap.Height; j++)
            {
                if (random.Next(90) <= this.fineness)
                {
                    bitmap.SetPixel(i, j, Color.White);//获取指定位置的像素颜色
                }
            }
        }
    }
    private void DrawValidateCode(Bitmap bitmap, string validateCode)
    {
        Graphics g = Graphics.FromImage(bitmap);
        Font font = new Font(fontFamily, fontSize, FontStyle.Bold);
        g.DrawString(validateCode, font, Brushes.Black, random.Next(-3, 11), random.Next(-4, 1));//在指定区域绘制文本字符
    }
}