.NET开发

本类阅读TOP10

·NHibernate快速指南(翻译)
·vs.net 2005中文版下载地址收藏
·【小技巧】一个判断session是否过期的小技巧
·VB/ASP 调用 SQL Server 的存储过程
·?dos下编译.net程序找不到csc.exe文件
·通过Web Services上传和下载文件
·学习笔记(补)《.NET框架程序设计(修订版)》--目录
·VB.NET实现DirectDraw9 (2) 动画
·VB.NET实现DirectDraw9 (1) 托管的DDraw
·建站框架规范书之——文件命名

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
C#版本的混合的验证码

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="utf-8"  Debug="true" %>
<%@ import namespace="System"%>
<%@ import namespace="System.IO"%>
<%@ import namespace="System.Drawing"%>
<%@ import namespace="System.Drawing.Imaging"%>
<script  runat="server"> 
  private void Page_Load(object sender, System.EventArgs e){
   ValidateCode( RndNum(6) );;//测试
  }

  private void ValidateCode(string VNum) {
   Bitmap Img = null;
   Graphics g = null ;
   MemoryStream ms = null ;

   int gheight = VNum.Length*12;
   Img = new Bitmap(gheight,20);
   g = Graphics.FromImage(Img);
   Font f = new Font( "新宋体",12 );
   SolidBrush s = new SolidBrush( Color.Red );
   g.DrawString(VNum,f,s,3,3);
   ms=new MemoryStream();
   Img.Save(ms,ImageFormat.Png);
   Response.ClearContent() ;//更改http ContentType
   Response.ContentType="image/Png";
   Response.BinaryWrite(ms.ToArray());
   //回收资源
   g.Dispose();
   Img.Dispose();
   Response.End();
  }
  private string RndNum(int VcodeNum) {
   string Vchar = "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,W,X,Y,Z" ;
   string[] VcArray = Vchar.Split(',') ;
   string  VNum = "" ;//由于字符串很短,就不用StringBuilder了
   int temp = -1 ;//记录上次随机数值,尽量避免生产几个一样的随机数

   //采用一个简单的算法以保证生成随机数的不同
   Random rand =new Random();
   for ( int i = 1 ; i < VcodeNum+1 ; i++ ) {    
    if ( temp != -1) {
     rand =new Random(i*temp*unchecked((int)DateTime.Now.Ticks));
    }    
    int t =  rand.Next(35) ;
    if (temp != -1 && temp == t) {
     return RndNum( VcodeNum );
    }
    temp = t  ;
    VNum += VcArray[t];

   }
   return VNum ;
  }
</script>




相关文章

相关软件