net 实现验证码功能的Web控件.doc

上传人:ni****g 文档编号:550946244 上传时间:2022-11-02 格式:DOC 页数:10 大小:40KB
返回 下载 相关 举报
net 实现验证码功能的Web控件.doc_第1页
第1页 / 共10页
net 实现验证码功能的Web控件.doc_第2页
第2页 / 共10页
net 实现验证码功能的Web控件.doc_第3页
第3页 / 共10页
net 实现验证码功能的Web控件.doc_第4页
第4页 / 共10页
net 实现验证码功能的Web控件.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《net 实现验证码功能的Web控件.doc》由会员分享,可在线阅读,更多相关《net 实现验证码功能的Web控件.doc(10页珍藏版)》请在金锄头文库上搜索。

1、A 实现验证码功能的Web控件 A的设计方式和设计理念和其他的如Asp,Jsp,Php,Perl等都不一样,几乎是完全的面向对象设计!代码的复用就是其中差异较大的特点之一,A除了可以用Include以外,还提供了比较有特点的Web控件,包括:Ascx形式和带设计时支持的控件本文属于后者,为了熟悉这些新概念,我自己写了个Web控件。 在实际项目中运行使用良好,以后,要有时间,我还将不断改进。 ValidateCode控件的使用方法: 第一步: 编译我提供的原代码, 然后,在S 2003工具栏上, 选择添加/移除项, 选中编译好的dll文件。 第二步: 工具栏上就会多一个Web控件Validate

2、Code,做好一个Web窗体,在S 2003开发界面上,直接把控件拖到WebForm上,就OK! 第三步: 在该控件的GraphicOK事件中获取,验证码的字符信息,用于和用户录入做比较! 最后一步: 在网站的根目录下,建一个temp目录(也可以自己指定目录),用于存放验证码 图片,不用担心,代码会自动删除无用的图片! 原代码如下: using System; using System.Web.UI; using System.Web.UI.WebControls; using System.ComponentModel; using System.IO; using System.Drawi

3、ng; using System.Drawing.Drawing2D; using System.Drawing.Imaging; namespace WebValidateCode / / ValidateCode 的摘要说明。 / 设计者:王海波 2004-11-20 / / public enum GraphicType Jpg = 0, Gif = 1, Png = 2, Bmp = 3, /ToolboxBitmap(D:DotnetAppValidateCodeValidateCode.bmp) /设置控件在工具箱上的图标 public class ValidateCode : S

4、ystem.Web.UI.WebControls.WebControl ,INamingContainer private int pCodelen=5; private int pChartWidth=100; private int pChartHeight=20; private GraphicType pChartType; private string pAuthenCode; private string pTempImageURLPath=/temp; private string pAuthenImageFullname; private string pAuthenImage

5、FullURL; /生成校验码的变量 start private Bitmap validateImage; private Graphics g; /生成校验码的变量 End private TextBox txt=new TextBox(); private System.Web.UI.WebControls.Image img= new System.Web.UI.WebControls.Image(); #region 定义控件事件 public delegate void GraphicCreated(object sender, EventArgs e); public event

6、 EventHandler GraphicOK; /在校验图片生成结束以后触发 protected virtual void OnGraphicOK(object sender, EventArgs e) if (GraphicOK != null) /Invokes the delegates. GraphicOK(sender, e); #endregion #region 控件属性 /生成校验码的长度 Bindable(true),Browsable(true),Category(Appearance),DefaultValue(true),Description(需要验证码的长度,建议

7、在58位之间!) public int CodeLength get return pCodelen; set pCodelen = value; /生成校验码的长度 Bindable(true),Browsable(true),Category(Appearance),DefaultValue(true),Description(生成验证码图片的临时存放路径,要求必须是网站下的虚拟目录!) public string TempImageURLPath get return pTempImageURLPath; set pTempImageURLPath = value; Bindable(t

8、rue),Browsable(true),Category(Appearance),DefaultValue(GraphicType.Jpg),Description(选择生成校验图文件的类型(Jpg;Gif;Png;Bmp)!) public GraphicType ChartType get return pChartType; set pChartType = value; /生成校验码图片的宽度 public int ChartWidth get return pChartWidth; set pChartWidth = value; /生成校验码图片的高度 public int Ch

9、artHeight get return pChartHeight; set pChartHeight = value; /需要生成的校验码 public string AuthenCode get return pAuthenCode; set pAuthenCode = value; #endregion / / 将此控件呈现给指定的输出参数。 / / 要写出到的 HTML 编写器 protected override void Render(HtmlTextWriter output) System.Web.UI.WebControls.Image objImage; /TextBox

10、objTxt; /绘制包含的控件 objImage = (System.Web.UI.WebControls.Image) Controls0; /objTxt = (TextBox) Controls1; if(pAuthenCode=null) pAuthenCode=GetValidateCode(); OnGraphicOK(this,EventArgs.Empty ); GetRandomImage(pAuthenCode); objImage.ImageUrl=pAuthenImageFullURL; objImage.RenderControl(output); / / 给控件添

11、加子控件 / protected override void CreateChildControls( ) /Controls.Add(btn); Controls.Add(img); /Controls.Add(txt); / / 控件Load时候属性的初始化 / / protected override void OnLoad(System.EventArgs e) EraseOldGraphic(); /删除过期的图片 / / 生成随机的 / private void MakeRandomFileName() string strRandName=DateTime.Now.Ticks.T

12、oString()+.jpg; pAuthenImageFullname=this.Page.MapPath(TempImageURLPath)+strRandName; pAuthenImageFullURL=TempImageURLPath+/+strRandName; private void GetRandomImage(string strValidateCode) /生成随即图片的全名,和全URL MakeRandomFileName(); validateImage = new Bitmap(pChartWidth, pChartHeight, PixelFormat.Forma

13、t24bppRgb); / .Format24bppRgb); g = Graphics.FromImage(validateImage); g.Clear(Color.LightGray) ; /g.DrawString(strValidateCode , new Font(宋体,16,FontStyle.Bold),new SolidBrush(Color.DarkRed),new PointF(2,2); for(int i=0;istrValidateCode.Length;i+) Random r = new Random(); PointF startPos=new PointF(r.Next(3,6)+(r.Next(12,14)*i ),r.Next(-1,2) ); g.DrawString(strValidateCode.Substring(i,1) , new Font(宋体,14,FontStyle.Italic),new SolidBrush(Color.Blue),startPos

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号