额~~~代码我有,但我也不是完全理解,在上面我写了简单的注释,
只能简单的讲解!! 
public partial class Code : System.Web.UI.Page
    {
        string _str_code = "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";
        int _int_length = 4;
        protected void Page_Load(object sender, EventArgs e)
        {
            string str_code = code_view();
            Session["code"] = str_code;
            view_img(str_code);
        }        /// <summary>
        /// 生成验证码的随机数
        /// </summary>
        /// <returns></returns>
        private string code_view()
        {
            string return_str = "";
            string[] str_arr = _str_code.Split(new char[] { ',' });            Random r = new Random(unchecked((int)DateTime.Now.Ticks));//让产生的随机数不重复
            //产生随机数
            int int_start = -1;
            for (int i = 0; i < _int_length; i++)
            {
                int_start = r.Next(0, str_arr.Length - 1);
                return_str += str_arr[int_start];
            }            return return_str;
        }        /// <summary>
        /// 用GDI+将随机数绘制到背景图片上
        /// </summary>
        /// <param name="str_code"></param>
        private void view_img(string str_code)
        {
            Bitmap img1 = new Bitmap(70, 30);//用位图定位图片的大小            //绘制验证码
            Graphics ps = Graphics.FromImage(img1);
            ps.Clear(Color.White);
            Font ft = new Font("Arial", 14, FontStyle.Bold);
            LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, img1.Width, img1.Height), Color.Blue, Color.DarkOrange, 1.2f);
            System.Drawing.Image img2 = System.Drawing.Image.FromFile(Server.MapPath("~") + @"\BackImage.gif");
            ps.DrawImage(img2, new Rectangle(0, 0, img1.Width, img1.Height));
            ps.DrawString(str_code, ft, brush, 2, 2);
            ps.DrawRectangle(new Pen(Color.Silver), new Rectangle(0, 0, img1.Width - 1, img1.Height - 1));            //将编辑好的验证码保存到内存中
            MemoryStream ms = new MemoryStream();
            img1.Save(ms, ImageFormat.Gif);            //将内存中的验证码输出到页面
            Response.ClearContent();
            Response.ContentType = "image/Gif";
            Response.BinaryWrite(ms.ToArray());            ms.Dispose();
            ps.Dispose();
        }
    }

解决方案 »

  1.   

    我写过一个简单的,代码忘存哪了。
    就是自定义个空件,我是继承的panel,
    然后随机生成你想要随机码,然后画到panel里,
    如果想有点背景,你再处理下。
      

  2.   

    请参考一下:
    http://www.cnblogs.com/liudao/archive/2007/04/29/732065.html
      

  3.   

    网上有很多直接找
    我给帖一段参考下
    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;
    using System.Drawing.Drawing2D;
    public partial class ValidateCode : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Bitmap newBitmap = new Bitmap(75, 27, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
            Graphics g = Graphics.FromImage(newBitmap);
            Random r = new Random();
            g.Clear(Color.White);
            Color c1 = Color.FromArgb(64, 184, 6);
            System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 10, 75, 27), c1, c1, 0.0f, true);        //for (int i = 0; i < 25; i++)
            //{
            //    int x1 = r.Next(newBitmap.Width);
            //    int x2 = r.Next(newBitmap.Width);
            //    int y1 = r.Next(newBitmap.Height);
            //    int y2 = r.Next(newBitmap.Height);
            //    g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);
            //}
            //for (int i = 0; i < 100; i++)
            //{
            //    int x = r.Next(newBitmap.Width);
            //    int y = r.Next(newBitmap.Height);
            //    newBitmap.SetPixel(x, y, Color.FromArgb(r.Next()));
            //}        Color c = Color.FromArgb(234,234,234);
            g.FillRectangle(new SolidBrush(c), 0, 0, 75, 27);
            string value = GenerateRandom(4);
            Font font = new Font("Arial", 18, System.Drawing.FontStyle.Regular);
            g.DrawString(value, font, brush, 0, 0);
            g.DrawRectangle(new Pen(Color.White), 0, 0, 75, 27);
            //g.FillRectangle(new SolidBrush(Color.Gray),0,12,80,1); 
           
            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            newBitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
            Response.ClearContent();
            Response.ContentType = "image/gif";
            Response.BinaryWrite(ms.ToArray());        Session["validatecode"] = value;
        }
        private   static   char[]   constant   =   
                      {   
                              '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','Z','X','Y','Z',   
                      };   
              public   static   string   GenerateRandom(int   Length)   
              {   
                      System.Text.StringBuilder   newRandom   =   new   System.Text.StringBuilder(36);   
                      Random   rd   =   new   Random();   
                      for   (int   i   =   0;   i   <   Length;   i++)   
                      {   
                              newRandom.Append(constant[rd.Next(36)]);   
                      }   
                      return   newRandom.ToString();   
              }   
    }