测试ok后立刻给分,最好不要太简单,一次发不完分多次啊

解决方案 »

  1.   

    validate.aspx
    就保留一行
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="validate.aspx.cs" Inherits="validate"    %>.csusing System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Drawing.Drawing2D;
    using System.Drawing.Imaging;
    using System.IO;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    public partial class validate : System.Web.UI.Page
    {
        private const int rndLength = 4;
        protected void Page_Load(object sender, EventArgs e)
        {
            // 在此处放置用户代码以初始化页面
            string vnum;
            vnum = GetByRndNum();
            Session["validatecode"] = vnum;        Response.ClearContent(); //需要输出图象信息 要修改HTTP头 
            //Response.BufferOutput = false;
            Response.ContentType = "image/Jpeg";
            Response.BinaryWrite(GetByValidateCode(vnum).ToArray());
            //Response.Close();    }    private MemoryStream GetByValidateCode(string VNum)//返回内存流
        {
            Bitmap Img = null;
            Graphics g = null;
            MemoryStream ms = null;
            Random random = new Random();
            int gheight = VNum.Length * 12;
            Img = new Bitmap(gheight, 20);
            g = Graphics.FromImage(Img);
            Font f = new Font("Arial", 12, FontStyle.Bold);        g.Clear(GetByRandColor(180, 200));//设定背景色
            Pen blackPen = new Pen(Color.AntiqueWhite, 1);
            //Pen blackPen = new Pen(Color.Black ,1);
            for (int i = 0; i < 32; i++)// 随机产生干扰线,使图象中的认证码不易被其它程序探测到
            {
                int x = random.Next(gheight);
                int y = random.Next(20);
                int xl = random.Next(6);
                int yl = random.Next(12);
                g.DrawLine(blackPen, x, y, x + xl, y + yl);
            }
            SolidBrush s = new SolidBrush(Color.SaddleBrown);
            g.DrawString(VNum, f, s, 3, 3);
            ms = new MemoryStream();
            Img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
            g.Dispose();
            Img.Dispose();
            return ms;
        }
        //-----------------给定范围获得随机颜色------------
        Color GetByRandColor(int fc, int bc)
        {
            Random random = new Random();        if (fc > 255) fc = 255;
            if (bc > 255) bc = 255;
            //if(ac>255) ac=255;
            int r = fc + random.Next(bc - fc);
            int g = fc + random.Next(bc - fc);
            int b = fc + random.Next(bc - bc);
            Color rs = Color.FromArgb(r, g, b);
            return rs;
        }    //-----------------------取随机产生的认证码(N位数字)
        public string GetByRndNum()
        {
            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 = "";        
            //采用一个简单的算法以保证生成随机数的不同
            Random rand = new Random();
            int[] rndArr = new int[rndLength];
            for (int i = 1; i < rndLength + 1; i++)
            {   
                if(i>1)
                {
                    do
                    {
                        rndArr[i-1] = rand.Next(10);//rand.Next(35) ;
                        bool goon = false;
                        for(int ix=0; ix<i-1; ix++)
                        {
                            if (rndArr[ix] == rndArr[i-1])
                            {
                                goon = true;
                                break;
                            }
                        }
                        if (!goon)
                            break;
                    } while (1 == 1);
                }
                else
                    rndArr[i-1] = rand.Next(10);
                VNum += rndArr[i-1];
            }
            return VNum;
        }
    }
    //--以上2005在2003中只要修改类那里即可
      

  2.   

    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;namespace WebLiveMessage.Library
    {
    /// <summary>
    /// CheckCode 的摘要说明。
    /// </summary>
    public class CheckCode : System.Web.UI.Page
    {
    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    string checkCode = CreateRandomCode(4);
    Session["CheckCode"] = checkCode;
    CreateImage(checkCode);
    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.Load += new System.EventHandler(this.Page_Load);
    }
    #endregion private string CreateRandomCode(int CodeCount)
    {
    string allChar = "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[] allCharArray = allChar.Split(Convert.ToChar(","));
    string RandomCode = "";
    int temp = -1; Random rand = new Random();
    for (int i = 0; i < CodeCount; i++)
    {
    if (temp != -1)
    {
    rand = new Random(temp * i * ((int)DateTime.Now.Ticks));
    } int t = rand.Next(36); while (temp == t)
    {
    t = rand.Next(36);
    } if (t == 35)
    {
    Console.WriteLine(t.ToString() + "|" + i.ToString());
    }
    temp = t;
    RandomCode += allCharArray[t];
    } return RandomCode;
    } private void CreateImage(string checkCode)
    {
    int iwidth = (int)(checkCode.Length * 11.5);
    System.Drawing.Bitmap image = new System.Drawing.Bitmap(iwidth, 20);
    Graphics g = Graphics.FromImage(image);
    Font f = new System.Drawing.Font("Arial", 10, System.Drawing.FontStyle.Bold);
    Brush b = new System.Drawing.SolidBrush(Color.White);
    //g.FillRectangle(new System.Drawing.SolidBrush(Color.Blue),0,0,image.Width, image.Height); 
    g.Clear(Color.Blue);
    g.DrawString(checkCode, f, b, 3, 3); Pen blackPen = new Pen(Color.Black, 0);
    Random rand = new Random();
    for (int i = 0; i < 5; i++)
    {
    int y = rand.Next(image.Height);
    g.DrawLine(blackPen, 0, y, image.Width, y);
    } System.IO.MemoryStream ms = new System.IO.MemoryStream();
    image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
    Response.ClearContent();
    Response.ContentType = "image/Jpeg";
    Response.BinaryWrite(ms.ToArray());
    g.Dispose();
    image.Dispose();

    }
    }
      

  3.   

    使用页面上
    <img alt="点击刷新..." src="" style="cursor:pointer;" id="vcodeimg"  onclick="this.src='validate.aspx?time=' + Math.random();" />
                      <script language="javascript" type="text/javascript">     
                                                    document.getElementById('vcodeimg').src='validate.aspx?time='+ Math.random();
                                                </script>
      

  4.   

    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.IO;
    using System.Drawing.Imaging;
    using System.Drawing.Drawing2D;namespace _365tour.Member
    {
     /// <summary>
     /// LoginCodeImage 的摘要说明。
     /// </summary>
     public class LoginCodeImage : System.Web.UI.Page
     {
      private Bitmap validateimage;
      private Graphics g;
      private void Page_Load(object sender, System.EventArgs e)
      {
       // 在此处放置用户代码以初始化页面
       if (!IsPostBack)
       { 
        string  VNum  =MakeValidateCode( );
        Session["VNum"]=VNum; 
        ValidateCode(VNum);
       }
      }
      public void  ValidateCode(string VNum)
      {
       validateimage = new Bitmap(50, 20, PixelFormat.Format24bppRgb);
       g = Graphics.FromImage(validateimage);   g.DrawString(VNum, new Font("Comic Sans MS",12),new SolidBrush(Color.White),new PointF(3,0));
       g.FillRectangle(new LinearGradientBrush(new Point(0,0), new Point(110,20), Color.FromArgb(0,0,0,0),Color.FromArgb(255,255,60,40)),0,0,120,30); 
       g.Save();
       MemoryStream ms=new MemoryStream();
       validateimage.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
       Response.ClearContent();
       Response.ContentType="image/gif";
       Response.BinaryWrite(ms.ToArray());
       Response.End();
      }  private string MakeValidateCode()
      {
       char[] s = new char[]{'0','1', '2','3','4','5','6','7','8','9'};
       string num = "";
       Random r = new Random();
       for(int i = 0; i < 4; i++)
       {
        num += s[r.Next(0, s.Length)].ToString(); 
       }
       return num;
      }  #region Web 窗体设计器生成的代码
      override protected void OnInit(EventArgs e)
      {
       //
       // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
       //
       InitializeComponent();
       base.OnInit(e);
      }
      
      /// <summary>
      /// 设计器支持所需的方法 - 不要使用代码编辑器修改
      /// 此方法的内容。
      /// </summary>
      private void InitializeComponent()
      {    
       this.Load += new System.EventHandler(this.Page_Load);
      }
      #endregion
     }
    }
      

  5.   

    hertcloud,那些图在那里的?我这里看不到图
      

  6.   

    //---.aspx在页面上<img alt="点击刷新..." src="" style="cursor:pointer;" id="vcodeimg"  onclick="this.src='validate.aspx?time=' + Math.random();" />
                      <script language="javascript" type="text/javascript">     
                                                    document.getElementById('vcodeimg').src='validate.aspx?time='+ Math.random();
                                                </script>
    这个就是调用方法啊..
      

  7.   

    validate.aspx
    就保留一行
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="validate.aspx.cs" Inherits="validate"    %>.csusing System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Drawing.Drawing2D;
    using System.Drawing.Imaging;
    using System.IO;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    这里是不是有问题?