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

推荐订阅源

人人都是产品经理
人人都是产品经理
Apple Machine Learning Research
Apple Machine Learning Research
云风的 BLOG
云风的 BLOG
罗磊的独立博客
博客园 - 三生石上(FineUI控件)
量子位
GbyAI
GbyAI
腾讯CDC
T
Tailwind CSS Blog
博客园 - Franky
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
D
Docker
G
Google Developers Blog
aimingoo的专栏
aimingoo的专栏
The GitHub Blog
The GitHub Blog
Microsoft Security Blog
Microsoft Security Blog
Stack Overflow Blog
Stack Overflow Blog
Hugging Face - Blog
Hugging Face - Blog
小众软件
小众软件
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
N
Netflix TechBlog - Medium
Jina AI
Jina AI
IT之家
IT之家
Y
Y Combinator Blog

博客园 - 十二随风

CSDN有个新家 Windows Server 2008常用优化设置 ASP.NET程序中常用的三十三种代码(转载) .NET中如何取得汉字或者拼音首字母(附源代码) c#2.0新特性:(三)迭代器(Iterators) c#2.0新特性:(二)匿名方法(Anonymous Methods) c#2.0新特性:(一)泛型(Generics) SQL语句导入导出大全(转载) - 十二随风 - 博客园 SQL数据库的打包部署安装 ClickOnce部署WinForm应用程序 如何在DataGrid控件中实现自定义分页 使用APPlication,Session,Cookie和ViewState等对象保存信息的区别是什么? 客户端JavaScript实现监视用户键盘输入(只能输入数字,最大输入8个) 如何用Response.Redirect方法传递汉字 如何处理多页面重定向到同一页面后的返回问题 如何实现服务器端下页面动态添加JavaScript脚本 ExecuteReader(),ExecuteNonQuery(),ExecuteScalar(),ExecuteXmlReader()之间的区别 经典的三层设计 刷新aspx页面的六种方法
如何在ASP.NET中实现验证码?
十二随风 · 2006-05-27 · via 博客园 - 十二随风
                                                   


    在一些项目中,需要在用户注册或者登录时提示输入验证码,那么如何在ASP.NET中实现验证码的功能呢?
    1.知识点介绍
    验证码其实是随机产生的一些数字,在System命名空间下提供的Random类可以用来产生随机性的非负数字.
    在ASP.NET中的System.Drawing命名空间中,提供了Bitmap,Graphics类,其中Bitmap类封装了GDI+位图,继承自Image类,用于处理由像素数据定义的图象.Graphics类封装了GDI和绘图面,也就是相当于画板.下面就使用Random,Bitmap和Graphics类把生成的随即数绘制到创建的位图中.并用Image控件显示创建的位图.
    2.示例
    新建"WebForm1.aspx"页面,在该页面中添加一个Image控件,并设置其ImageUrl属性为生成的位图所要存放的路径.
    (1)WebForm1.aspx.cs代码:

private void Page_Load(object sender, System.EventArgs e)
        
{    
            
//建立位图对象
            Bitmap newBitmap=new Bitmap(36,16,System.Drawing.Imaging.PixelFormat.Format32bppArgb);
            
//根据上面创建的位图对象创建绘图层
            Graphics g=Graphics.FromImage(newBitmap);
            
//以指定的颜色填宠矩形区
            g.FillRectangle(new SolidBrush(Color.White),new Rectangle(0,0,36,16));
            
//创建字体对象
            Font textFont=new Font("Times new Roman",10);
            
//创建RectangleF结构指定一个区域
            RectangleF rectangle=new RectangleF(0,0,36,16);
            
//创建随机数对象
            Random rd=new Random();
            
//取得随机数
            int valationNo=1000+rd.Next(8999);
            
//使用指定的颜色填充上面的RectangleF结构指定的矩形区域
            g.FillRectangle(new SolidBrush(Color.BurlyWood),rectangle);
            
//在上面填充的矩形区域中填充上面生成的随机数
            g.DrawString(valationNo.ToString(),textFont,new SolidBrush(Color.Blue),rectangle);
            
//把创建的位图保存到指定的路径
            newBitmap.Save(Server.MapPath("img")+"\\RandomImg.gif",System.Drawing.Imaging.ImageFormat.Gif);

        }

    (2)代码说明
    首先创建Bitmap和Graphics对象,然后通过Font和RectangleF对象把Random对象生成的随机数绘制到位图上,最后把创建的位图保存到指定的目录下.
    注:首先运行程序,把img目录下生成的RandomImg.gif图片包括在工程中,然后设置页面Image的ImageUrl属性=RandomImg.gif.