c# .net 生成图片验证码的代码

所属分类: 网络编程 / ASP.NET 阅读数: 1780
收藏 0 赞 0 分享
说明:
 .net 万岁...
 .net framework 的类库真是太强了, 用 GDI+ 可以干N多N多事情.
  广告时间:
 shawl.qiu C# CMS 系统 预计40天后开始编码, 现在逐步设计中, 免得到时求职说什么什么作品...唉.
 PS: 今天求职真是惨不忍睹, 谁要招网页相关的请联系 13435580019, 邱先生. 
 什么地方俺都去, 工资只要能过活就行,  但是食宿问题得解决.
 shawl.qiu
 2007-02-01
 http://blog.csdn.net/btbtd
 class checkcode:
复制代码 代码如下:

<%@ Page Language="C#" AutoEventWireup="True" %>  
<%@ import Namespace="System.Drawing"%>  
<%@ import Namespace="System.Drawing.Drawing2D"%>  
<%@ import Namespace="System.Web"%>  
<script runat="server">  
 private void Page_Load(object sender, System.EventArgs e)  
 {  
  String sRndStr=checkcode.rndStr(4);  
  checkcode.general(sRndStr);  
 }   
/*-----------------------------------------------------------------------------------*\  
 * shawl.qiu c# .net checkcode class v1.0  
\*-----------------------------------------------------------------------------------*/  
//---------------------------------------------------------------------begin class checkcode  
public class checkcode  
{  
 //-----------------------------------begin event  
 public checkcode()  
 {  
 }  
 ~checkcode()  
 {  
 }  
 //-----------------------------------end event  
 //-----------------------------------begin public constant  
 //-----------------------begin about  
 public const String auSubject="shawl.qiu c# .net checkcode class";  
 public const String auVersion="v1.0";  
 public const String au="shawl.qiu";  
 public const String auEmail="shawl.qiu@gmail.com";  
 public const String auBlog="http://blog.csdn.net/btbtd";  
 public const String auCreateDate="2007-2-1";  
 //-----------------------end about  
 //-----------------------------------end public constant  
 //-----------------------------------begin public static method  
 public static void general(String sCc)  
 {  
  Int32 ccLen=sCc.Length;  
  String ccFtFm="Arial";  
  Int32 ccFtSz=12;  
  Int32 ccWidth=ccLen*ccFtSz+1;  
  Int32 ccHeight=ccFtSz+5;  
  using(Bitmap oImg = new Bitmap(ccWidth, ccHeight))  
  {  
   using(Graphics oGpc=Graphics.FromImage(oImg))  
   {  
    HatchBrush hBrush = new HatchBrush(HatchStyle.DashedVertical,  
      Color.Yellow, Color.Silver);   
    oGpc.FillRectangle(hBrush, 0, 0, ccWidth, ccWidth);  
    oGpc.DrawString(sCc,new System.Drawing.Font(ccFtFm,ccFtSz, FontStyle.Bold),  
     new System.Drawing.SolidBrush(Color.Black),0,0);   
    //-----------------------边框  
    Pen blackPen = new Pen(Color.Black, 1);  
    oGpc.DrawLine(blackPen, 0, ccHeight, 0, 0); // 左竖线  
    oGpc.DrawLine(blackPen, 0,0,ccWidth,0); // 顶横线  
    oGpc.DrawLine(blackPen, ccWidth-1,0,ccWidth-1,20); // 右竖线  
    oGpc.DrawLine(blackPen, 0, ccHeight-1, ccWidth, ccHeight-1); // 底横线  
    writeImg(oImg);  
   }  
  }  
 } // end public static void general  
 public static String rndStr(Int32 len)  
 {  
  String sTemp="";  
  String sForRnd="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";  
  String[] aRnd=sForRnd.Split(',');  
  Random oRnd=new Random();  
  Int32 iArLen=aRnd.Length;  
  for(Int32 i=0; i<len; i++)  
  {  
   sTemp+=aRnd[oRnd.Next(0,iArLen)];  
  }  
  return sTemp;  
 } // end public static String rndStr  
 //-----------------------------------end public static method  
 //-----------------------------------begin private static method  
 private static void writeImg(Bitmap oImg)  
 {  
  using(System.IO.MemoryStream ms=new System.IO.MemoryStream())  
  {  
   oImg.Save(ms,System.Drawing.Imaging.ImageFormat.Png);   
   HttpContext.Current.Response.ClearContent();    
   HttpContext.Current.Response.ContentType="image/Png";  
   HttpContext.Current.Response.BinaryWrite(ms.ToArray());  
  }  
 } // end private static void writeImg  
}  
//---------------------------------------------------------------------end class checkcode  
</script>  
更多精彩内容其他人还在看

asp.net 页面间传值与跳转的区别

通过Server.Transfer("b.aspx") 与Response.Redirect("b.aspx")的区别
收藏 0 赞 0 分享

ASP.NET Gridview与checkbox全选、全不选实现代码

ASP.NET Gridview checkbox全选与全不选实现代码,其实原理就是利用js来实现的,但需要简单的设置下回传。
收藏 0 赞 0 分享

ASP.NET DropDownList控件的使用方法

ASP.NET DropDownList控件的使用方法,学习asp.net的朋友没用过这个控件的朋友可以参考下。
收藏 0 赞 0 分享

一些.NET对多线程异常处理技巧分享

多线程应用,在实际的项目或产品开发中,原则上来说,应该尽量避免,但是在强调用户体验的要求下或开发平台的限制下(如 Silverlight Socket 通讯),我们不得不用多线程。
收藏 0 赞 0 分享

ASP.NET MVC运行出现Uncaught TypeError: Cannot set property __MVC_FormValidation of null的解决方法

同一相站点,有些页面的客户端验证能工作,而有些死活不行。打开页面就出现Uncaught TypeError: Cannot set property __MVC_FormValidation of null错误
收藏 0 赞 0 分享

asp.net 通用分页显示辅助类(改进版)

在使用ASP.NET编程时,如果不用控件的默认分页功能,想自己搞一个,可以看看本文的asp.net通用分页显示辅助类哦。
收藏 0 赞 0 分享

微软 Visual Studio 2010官方下载地址给大家

昨天VS2010在网上报道都已经发布了,现在今天在网上找到Visual Studio 2010官方下载地址,提供给大家下载。
收藏 0 赞 0 分享

Javascript 直接调用服务器C#代码 ASP.NET Ajax实例

近来总有一些朋友会问到一些入门的问题,把这些问题整理一下,写出来。在以前的文章里,曾经利用纯JS编写过Ajax引擎,在真正开发的时候,大家都不喜欢以这种低效率的方式开发,利用MS Ajax的集成的引擎,可以简单不少工作。
收藏 0 赞 0 分享

ASP.NET 页面刷新的实现方法(包括html,js)

ASP.NET 页面刷新的实现方法,比较全了, 包括html与js下的实现方法。
收藏 0 赞 0 分享

asp.net 无刷新翻页就是这么简单

前两天看了一个自定义分页控件,和AspNetPager一样是实现IPostBackEventHandler接口,不过简洁许多,就想能不能实现ICallbackEventHandler接口做到无刷新分页呢?想到了就马上去做,终于,设想变成了现实!!
收藏 0 赞 0 分享
查看更多