本站首页    管理页面    写新日志    退出

The Neurotic Fishbowl

[.NET-Winform]验证码 c#版本
麦林 发表于 2007/5/16 21:29:17

①生成图片原代码: private void Page_Load(object sender, System.EventArgs e)  {   // 在此处放置用户代码以初始化页面   //RndNum是一个自定义函数   string VNum=RndNum(4); //这里的数字4代表显示的是4位的验证字符串!   Session["VNum"]=VNum;   ValidateCode(VNum);  }   //生成图像函数  private void ValidateCode(string VNum)   {   int Gheight=(int)(VNum.Length * 7);   //gheight为图片宽度,根据字符长度自动更改图片宽度   System.Drawing.Bitmap Img = new System.Drawing.Bitmap(Gheight,12);   Graphics g = Graphics.FromImage(Img);   g.DrawString(VNum,new System.Drawing.Font("宋体",9),new System.Drawing.SolidBrush(Color.Red),0,0);    //在矩形内绘制字串(字串,字体,画笔颜色,左上x.左上y)    System.IO.MemoryStream ms=new System.IO.MemoryStream();   Img.Save(ms,System.Drawing.Imaging.ImageFormat.Png);    Response.ClearContent(); //需要输出图象信息 要修改HTTP头    Response.ContentType="image/Png";   Response.BinaryWrite(ms.ToArray());   g.Dispose();   Img.Dispose();    Response.End();  }   //生成随机数函数中从Vchar数组中随机抽取  //字母区分大小写  public 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) ;    int t=rand.Next(35);    if (temp != -1 && temp == t)     {     return RndNum( VcodeNum );    }    temp = t  ;    VNum += VcArray[t];    }   return VNum ;  }②在需要用的页面上:<img src="验证页面.aspx">

阅读全文(1790) | 回复(0) | 编辑 | 精华

 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)
 

The Neurotic Fishbowl

.: 公告

fighting for the work!


Bloginess

«November 2025»
1
2345678
9101112131415
16171819202122
23242526272829
30

.: 我的分类(专题)

首页(449)
文字感悟(103)
学习公共库(61)
生活体会(100)
资源收集(14)
.NET-Winform(27)
音乐文字(15)
心情小记(119)
SQL问题解决(10)


In the Bowl

.: 最新日志

C#打印代码
你看到的我是蓝色的
即将逝去的3月
这个假期
两个月过去
表名存在其他表时获取数据
条码打印
Remoting的用法
INI文件用法


.: 最新回复

回复:条码打印
回复:条码打印
回复:即将逝去的3月
回复:cookie对象使用
回复:条码打印
回复:JSP学习(字符串比较)
回复:应收应付核销规则及常见问题(续)
回复:两个月过去
回复:两个月过去


The Fishkeeper
blog名称:栗色?蓝色?
日志总数:449
评论数量:201
留言数量:37
访问次数:2271116
建立时间:2006年5月16日



Text Me

.: 留言板

签写新留言

链接完成
回:loseVC
来喽~
转转......
新年啦
对自己说
祝福
回:佑手
WO


Other Fish in the Sea

.: 链接


loseVC's BLOG
Collapsar_feel
布衣加针
C#and.Net
Kinogam Web




站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.703 second(s), page refreshed 144799137 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号