CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

[求助]验证码出现问题一二,麻烦各位解答一下!

楼主Kennytian(努力学习)2006-03-05 23:54:04 在 .NET技术 / ASP.NET 提问

代码如下  
   
  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.IO;  
  using   System.Drawing;  
  using   System.Drawing.Imaging;  
  using   System.Drawing.Drawing2D;  
   
  public   partial   class   ValidateCode   :   System.Web.UI.Page  
  {  
      protected   void   Page_Load(object   sender,   EventArgs   e)  
      {  
          string   checkCode   =   CreateRandomCode(4);  
          Session["CheckCode"]   =   checkCode;  
          CreateImage(checkCode);  
      }  
   
      private   string   CreateRandomCode(int   codeCount)  
      {  
          //显示的验证码字符,去掉数字1,大写字母I,数字0,大写字母O  
          string   allChar   =   "2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,T,U,W,X,Y,Z";  
          string[]   allCharArray   =   allChar.Split(',');  
          string   randomCode   =   "";  
          int   temp   =   -1;  
   
          Random   rand   =   new   Random();  
          for   (int   i   =   0;   i   <   codeCount;   i++)  
          {  
                  if   (temp   !=   -1)  
                  {  
                          rand   =   new   Random(i   *   temp   *   ((int)DateTime.Now.Ticks));  
                  }  
                  //**31是上面验证验证码的总数  
                  int   t   =   rand.Next(31);  
                  if   (temp   ==   t)  
                  {  
                          return   CreateRandomCode(codeCount);  
                  }  
                  temp   =   t;  
                  randomCode   +=   allCharArray[t];  
          }  
          return   randomCode;  
      }  
   
   
      private   void   CreateImage(string   checkCode)  
      {  
          int   iwidth   =   (int)(checkCode.Length   *   11);  
          Bitmap   image   =   new   Bitmap(iwidth,15);  
          Graphics   g   =   Graphics.FromImage(image);  
          //**生成的字体,字号,样式  
          Font   ft   =   new   Font("Courier   New",   10,   FontStyle.Regular);  
          //**产生字体颜色  
          Brush   b   =   new   SolidBrush(Color.DarkGreen);  
          //**背景颜色  
          g.Clear(Color.GhostWhite);  
          g.DrawString(checkCode,   ft,   b,   3,   3);  
          Pen   blackPen   =   new   Pen(Color.Black,   0);  
          Random   rand   =   new   Random();  
          //**画图片的前景噪音点  
          for   (int   i   =   0;   i   <   20;   i++)  
          {  
                  int   x   =   rand.Next(image.Width);  
                  int   y   =   rand.Next(image.Height);  
                  image.SetPixel(x,   y,   Color.FromArgb(rand.Next()));  
          }  
          MemoryStream   ms   =   new   MemoryStream();  
          image.Save(ms,   ImageFormat.Gif);  
          //**后退也会变  
          Response.Cache.SetNoStore();  
          Response.ClearContent();  
          Response.ContentType   =   "images/gif";  
          Response.BinaryWrite(ms.ToArray());  
          g.Dispose();  
          image.Dispose();  
      }  
  }  
   
   
  问题1:能让背景透明的吗?  
  问题2:请怎么让验证码生成一个名为code.gif图片(因为有些空间是不允许Stream的),然后保存在images/下? 问题点数:20、回复次数:9Top

1 楼Kennytian(努力学习)回复于 2006-03-06 08:42:25 得分 0

自己顶一下Top

2 楼bidisty(浪漫草)回复于 2006-03-06 09:27:29 得分 10

背景用Color.Empty试试。  
  建议直接用Response.OutputStream输出。  
  image.Save(Response.OutputStream,   ImageFormat.Gif);  
  Save方法也有重载的方法可以保存为一个图片,但要对目录有操作的权限。Top

3 楼bidisty(浪漫草)回复于 2006-03-06 09:29:09 得分 0

背景也可以用Color.FromArgb   (Int32,   Int32,   Int32,   Int32)   方法来构建一个透明的。Top

4 楼Kennytian(努力学习)回复于 2006-03-06 10:27:28 得分 0

用Color.Empty,是黑的  
   
  用Color.FromArgb   (0,   0,   0,   0),也是黑的  
   
  两个方法都不能透明,麻烦bidisty再就我段代码想个办法Top

5 楼littlegang(Gang)回复于 2006-03-06 11:07:10 得分 0

透明色我记得是粉红色  
  Top

6 楼Kennytian(努力学习)回复于 2006-03-06 11:15:14 得分 0

楼上,可以提供一下代码吗?Top

7 楼Star_NET(木头)回复于 2006-03-06 12:34:23 得分 2

我也问怎么验证输入验证码是否正确?Top

8 楼littlegang(Gang)回复于 2006-03-06 14:42:19 得分 8

Color.TransparentTop

9 楼Kennytian(努力学习)回复于 2006-03-06 17:43:15 得分 0

楼上的方法也是黑色的。  
   
  To:Star_NET  
  要用到Session,再把验证码转成字符,然后做对!Top

相关问题

  • 验证问题,帮忙解答一下
  • 密码验证
  • 验证码
  • 密码验证
  • 密码验证
  • 验证问题,麻烦大家看看!
  • 为什么每次进CSDN总要输用户名和密码还有验证码,多麻烦啊~~
  • 求助,ASP.net验证码(C#)并绘制到图里,麻烦各位帮帮忙啊,随时关注
  • 验证码问题
  • 散分啊,麻烦那位老大给出详细的解答啊 (骑士巡游的代码)

关键词

  • checkcode
  • ui
  • drawing
  • using system

得分解答快速导航

  • 帖主:Kennytian
  • bidisty
  • Star_NET
  • littlegang

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo