ASP.NET随机码生成示例

本文介绍了一个使用C#生成随机验证码图片的方法。通过创建位图、绘制干扰线和点,以及生成随机字符串,最终将验证码图片输出给客户端。文章详细展示了如何设置验证码并将其存储在Session中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using System.Drawing; 
  
using System.Drawing.Imaging; 
  
using System.Drawing.Drawing2D; 
  生成页代码 
   
  
using System; 
  
using System.Data; 
  
using System.Configuration; 
  
using System.Collections; 
  
using System.Web; 
  
using System.Web.Security; 
  
using System.Web.UI; 
  
using System.Web.UI.WebControls; 
  
using System.Web.UI.WebControls.WebParts; 
  
using System.Web.UI.HtmlControls; 
  
using System.Drawing; 
  
using System.Drawing.Imaging; 
  
using System.Drawing.Drawing2D; 
   
  
public partial class getRandImg : System.Web.UI.Page 
  

   
protected void Page_Load(object sender, EventArgs e) 
   

   
//生成随机码图片 
   SetValidateCode(); 
   
//生成页面不保存到cache 
   Response.Cache.SetNoStore(); 
   }
 
   
   
//设置验证码 
   private void SetValidateCode() 
   

   
//新建位图 
   Bitmap newBitmap = new Bitmap( 
   
71
   
23
   PixelFormat.Format32bppArgb 
   ); 
   
//从位图获得绘图画面 
   Graphics g = Graphics.FromImage(newBitmap); 
   
//随机数生成器 
   Random r = new Random(); 
   
//绘图画面清空 
   g.Clear(Color.White); 
   
//绘图画面划线干扰 
   for (int i = 0; i < 50; i++
   

   
int x1 = r.Next(newBitmap.Width); 
   
int x2 = r.Next(newBitmap.Width); 
   
int y1 = r.Next(newBitmap.Height); 
   
int y2 = r.Next(newBitmap.Height); 
   g.DrawLine(
new Pen( 
   Color.FromArgb(r.Next())), 
   x1, 
   y1, 
   x2, 
   y2 
   ); 
   }
 
   
//绘图画面点数干扰 
   for (int i = 0; i < 100; i++
   

   
int x = r.Next(newBitmap.Width); 
   
int y = r.Next(newBitmap.Height); 
   newBitmap.SetPixel( 
   x, 
   y, 
   Color.FromArgb(r.Next()) 
   ); 
   }
 
   
//获得随机字符串(5位长度) 
   string value = GenerateRandom(5); 
   
//随机字符串赋值给Session 
   Session["RandCode"= value; 
   
//定义图片显示字体样式 
   Font font = new Font( 
   
"Arial"
   
14
   FontStyle.Bold 
   ); 
   Random rr 
= new Random(); 
   
int yy = rr.Next(14); 
   
//定义随机字符串显示图片刷子 
   LinearGradientBrush brush = new LinearGradientBrush( 
   
new Rectangle(007123), 
   Color.Red, 
   Color.Blue, 
   
1.2f
   
true 
   ); 
   g.DrawString(value, font, brush, 
2, yy); 
   g.DrawRectangle(
new Pen( 
   Color.Silver), 
   
0
   
0
   
70
   
22 
   ); 
   System.IO.MemoryStream ms 
= new System.IO.MemoryStream(); 
   newBitmap.Save(ms, ImageFormat.Gif); 
   
//输出图片 
   Response.ClearContent(); 
   Response.ContentType 
= "image/gif"
   Response.BinaryWrite(ms.ToArray()); 
   }
 
   
   
//常量集 
   private static char[] constant =
   
'0','1','2','3','4','5','6','7','8','9'
   
'a','b','c','d','e','f','g','h','i','j'
   
'k','l','m','n','o','p','q','r','s','t'
   
'u','v','w','x','y','z' 
   }

   
   
   
//生成随机字符串 
   public static string GenerateRandom(int Length) 
   

   System.Text.StringBuilder newRandom 
= new System.Text.StringBuilder(36); 
   Random rd 
= new Random(); 
   
for (int i = 0; i < Length; i++
   

   newRandom.Append(constant[rd.Next(
36)]); 
   }
 
   
return newRandom.ToString(); 
   }
 
  }
 
// 使用随机图片的页面,IMAGE控件的写法如下: 
   
  
<asp:Image ID="Image1" ImageUrl="~/getRandImg.aspx" runat="server" /> 

address:http://blog.youkuaiyun.com/dr592112441/archive/2007/11/30/1909702.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值