using  System;
using  System.Data;
using  System.Configuration;
using  System.Collections;
using  System.Web;
using  System.Web.Security;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Web.UI.WebControls.WebParts;
using  System.Web.UI.HtmlControls;
using  System.Drawing;

public   partial   class  RandomImage : Base
{
    
protected   void  Page_Load( object  sender, EventArgs e)
    {
        
string  sCheckCode  =  GenerateCheckCode();
        Cookie.setCookie(
" CheckCode " , sCheckCode);   // Cookie 中保存验证码

        CreateCheckCodeImage(sCheckCode);
    }

    
private   string  GenerateCheckCode()
    {
        
// 定义验证码长度
         int  codelength  =   4 ;
        
int  number;
        
string  RandomCode  =   string .Empty;
        Random r 
=   new  Random();
        
for  ( int  i  =   0 ; i  <  codelength; i ++ )
        {
            number 
=  r.Next();
            number 
=  number  %   36 ;   // 字符从0-9,A-Z中随机产生,对应的ASCLL码分别为48-57,65-90
             if  (number  <   10 )
                number 
+=   48 ;
            
else
                number 
+=   55 ;

            
if  (number  ==   48   ||  number  ==   79   ||  number  ==   49   ||  number  ==   73 ) // 过滤数字0和字母"O",过滤数字1和字母"i"
                number  =  number  +   2 ;

            RandomCode 
+=  (( char )number).ToString();
        }
        
return  RandomCode;
    }

    
private   void  CreateCheckCodeImage( string  checkCode)
    {
        
if  (checkCode  ==   null   ||  checkCode.Trim()  ==  String.Empty)
            
return ;

        System.Drawing.Bitmap p_w_picpath 
=   new  System.Drawing.Bitmap(( int )Math.Ceiling((checkCode.Length  *   12.5 )),  22 );
        Graphics g 
=  Graphics.FromImage(p_w_picpath);

        
try
        {
            
// 生成随机生成器
            Random random  =   new  Random();

            
// 清空图片背景色
            g.Clear(Color.White);

            
// 画图片的背景噪音线
             for  ( int  i  =   0 ; i  <   25 ; i ++ )
            {
                
int  x1  =  random.Next(p_w_picpath.Width);
                
int  x2  =  random.Next(p_w_picpath.Width);
                
int  y1  =  random.Next(p_w_picpath.Height);
                
int  y2  =  random.Next(p_w_picpath.Height);

                g.DrawLine(
new  Pen(Color.Silver), x1, y1, x2, y2);
            }

            Font font 
=   new  System.Drawing.Font( " Arial " 12 , (System.Drawing.FontStyle.Bold  |  System.Drawing.FontStyle.Italic));
            System.Drawing.Drawing2D.LinearGradientBrush brush 
=   new  System.Drawing.Drawing2D.LinearGradientBrush( new  Rectangle( 0 0 , p_w_picpath.Width, p_w_picpath.Height), Color.Blue, Color.DarkRed,  1.2f true );
            g.DrawString(checkCode, font, brush, 
2 2 );

            
// 画图片的前景噪音点
             for  ( int  i  =   0 ; i  <   100 ; i ++ )
            {
                
int  x  =  random.Next(p_w_picpath.Width);
                
int  y  =  random.Next(p_w_picpath.Height);

                p_w_picpath.SetPixel(x, y, Color.FromArgb(random.Next()));
            }

            
// 画图片的边框线
            g.DrawRectangle( new  Pen(Color.Silver),  0 0 , p_w_picpath.Width  -   1 , p_w_picpath.Height  -   1 );

            System.IO.MemoryStream ms 
=   new  System.IO.MemoryStream();
            p_w_picpath.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
            Response.ClearContent();
            Response.ContentType 
=   " p_w_picpath/Gif " ;
            Response.BinaryWrite(ms.ToArray());
        }
        
finally
        {
            g.Dispose();
            p_w_picpath.Dispose();
        }
    }
}


调用:<img id="imgVerify" src="RandomImage.aspx" οnclick="this.src=this.src+'?'" alt="看不清楚,点击换一张"/>