页面验证码程序(C#)

using  System;
using  System.Collections;
using  System.ComponentModel;
using  System.Data;
using  System.Drawing;
using  System.Web;
using  System.Web.SessionState;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Web.UI.HtmlControls;
using  System.Drawing.Imaging;
using  System.Drawing.Text;

namespace  VerifyCode
{
    
/// <summary>
    
/// 页面验证码程序
    
/// 使用:在页面中加入HTML代码 <img src="VerifyCode.aspx">
    
/// </summary>

    public class VerifyCode : System.Web.UI.Page
    
{

        
#region Private Members
        
static string[] FontItems  = new string[] {   "Arial"
                                                      
"Helvetica"
                                                      
"Geneva"
                                                      
"sans-serif"
                                                      
"Verdana"
                                                  }
;

        
static Brush[] BrushItems = new Brush[] {     Brushes.OliveDrab,
                                                      Brushes.ForestGreen,
                                                      Brushes.DarkCyan,
                                                      Brushes.LightSlateGray,
                                                      Brushes.RoyalBlue,
                                                      Brushes.SlateBlue,
                                                      Brushes.DarkViolet,
                                                      Brushes.MediumVioletRed,
                                                      Brushes.IndianRed,
                                                      Brushes.Firebrick,
                                                      Brushes.Chocolate,
                                                      Brushes.Peru,
                                                      Brushes.Goldenrod
                                                }
;

        
static string[] BrushName = new string[] {    "OliveDrab",
                                                      
"ForestGreen",
                                                      
"DarkCyan",
                                                      
"LightSlateGray",
                                                      
"RoyalBlue",
                                                      
"SlateBlue",
                                                      
"DarkViolet",
                                                      
"MediumVioletRed",
                                                      
"IndianRed",
                                                      
"Firebrick",
                                                      
"Chocolate",
                                                      
"Peru",
                                                      
"Goldenrod"
                                                 }
;

        
private static Color BackColor    =  Color.White;
        
private static Pen   BorderColor  =  Pens.DarkGray;
        
private static int   Width        =  52;
        
private static int   Height       =  21;

        
private Random _random;
        
private string _code;
        
private int    _brushNameIndex;
        
#endregion
 // end of Private Members


        
#region Web Form Designer generated code
        
override protected void OnInit(EventArgs e)
        
{
            
//
            
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
            
//
            InitializeComponent();
            
base.OnInit(e);
        }

        
        
/// <summary>
        
/// Required method for Designer support - do not modify
        
/// the contents of this method with the code editor.
        
/// </summary>

        private void InitializeComponent()
        
{    
            
this.Load += new System.EventHandler(this.Page_Load);
        }

        
#endregion



        
#region PageLoad Event
        
public void Page_Load(object sender, System.EventArgs e)
        
{
            
//
            
// TODO : initialize
            
//
            this._random = new Random();
            
this._code = GetRandomCode();

            
//
            
// TODO : use Session["code"] save the VerifyCode
            
//
            Session["code"= this._code;

            
//
            
// TODO : output Image
            
//
            this.SetPageNoCache();
            
this.OnPaint();
        }

        
#endregion
 // end of PageLoad Event


        
#region Helper Methods
        
/// <summary>
        
/// 设置页面不被缓存
        
/// </summary>

        private void SetPageNoCache()
        
{
            Response.Buffer 
= true;
            Response.ExpiresAbsolute 
= System.DateTime.Now.AddSeconds(-1);
            Response.Expires 
= 0;
            Response.CacheControl 
= "no-cache";
            Response.AppendHeader(
"Pragma","No-Cache");
        }


        
/// <summary>
        
/// 取得一个 4 位的随机码
        
/// </summary>
        
/// <returns></returns>

        private string GetRandomCode()
        
{
            
return Guid.NewGuid().ToString().Substring(04);
        }


        
/// <summary>
        
/// 随机取一个字体
        
/// </summary>
        
/// <returns></returns>

        private Font GetFont()
        
{
            
int fontIndex = _random.Next(0, FontItems.Length);
            FontStyle fontStyle 
= GetFontStyle(_random.Next(02));
            
return new Font(FontItems[fontIndex], 12, fontStyle);
        }


        
/// <summary>
        
/// 取一个字体的样式
        
/// </summary>
        
/// <param name="index"></param>
        
/// <returns></returns>

        private FontStyle GetFontStyle(int index)
        
{
            
switch (index)
            
{
                
case 0:
                    
return FontStyle.Bold;
                
case 1:
                    
return FontStyle.Italic;
                
default:
                    
return FontStyle.Regular;
            }

        }


        
/// <summary>
        
/// 随机取一个笔刷
        
/// </summary>
        
/// <returns></returns>

        private Brush GetBrush()
        
{
            
int brushIndex = _random.Next(0, BrushItems.Length);
            _brushNameIndex 
= brushIndex;
            
return BrushItems[brushIndex];
        }

        
#endregion
 // end of Helper Methods


        
#region Paint Methods
        
/// <summary>
        
/// 绘画事件
        
/// </summary>

        private void OnPaint()
        
{
            Bitmap objBitmap 
= null;
            Graphics g 
= null;

            
try
            
{
                objBitmap 
= new Bitmap(Width, Height);
                g 
= Graphics.FromImage(objBitmap);

                Paint_Background(g);
                Paint_Text(g);
                Paint_TextStain(objBitmap);
                Paint_Border(g);

                objBitmap.Save(Response.OutputStream, ImageFormat.Gif);
                Response.ContentType 
= "image/gif";
            }

            
catch {}
            
finally
            
{
                
if (null != objBitmap)
                    objBitmap.Dispose();
                
if (null != g)
                    g.Dispose();
            }

        }


        
/// <summary>
        
/// 绘画背景颜色
        
/// </summary>
        
/// <param name="g"></param>

        private void Paint_Background(Graphics g)
        
{
            g.Clear(BackColor);
        }


        
/// <summary>
        
/// 绘画边框
        
/// </summary>
        
/// <param name="g"></param>

        private void Paint_Border(Graphics g)
        
{
            g.DrawRectangle(BorderColor, 
00, Width - 1, Height - 1);
        }


        
/// <summary>
        
/// 绘画文字
        
/// </summary>
        
/// <param name="g"></param>

        private void Paint_Text(Graphics g)
        
{
            g.DrawString(_code, GetFont(), GetBrush(), 
31);
        }


        
/// <summary>
        
/// 绘画文字噪音点
        
/// </summary>
        
/// <param name="g"></param>

        private void Paint_TextStain(Bitmap b)
        
{
            
for (int n=0; n<30; n++)
            
{
                
int x = _random.Next(Width);
                
int y = _random.Next(Height);
                b.SetPixel(x, y, Color.FromName(BrushName[_brushNameIndex]));
            }

        }

        
#endregion
 // end of Paint Methods


    }
 // end of class

}
  //  end of namespace
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值