如何制作验证码? 就是那种字母数字印在图片上的那种? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.cnblogs.com/liudao/archive/2007/04/29/732065.htmlhttp://hi.baidu.com/skyjoy2006/blog/item/ea39ca54ecb16b5bd009067a.htmlhttp://dev.csdn.net/article/73/73816.shtm自己Google下这东西太多了 private string GetCode(int num) { string[] source ={ "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "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 code = ""; Random rd = new Random(); for (int i = 0; i < num; i++) { code += source[rd.Next(0, source.Length)]; } return code; } private MemoryStream GetVImageStream() { MemoryStream ImageMemoryStream = new MemoryStream(); string VCodeString = GetCode(4); Session["HCValidateCode"] = VCodeString; Font VCodeFont = new Font("Arial", 14, FontStyle.Bold); SolidBrush VCodeBrush = new SolidBrush(Color.SandyBrown); Pen LinePen = new Pen(Color.Ivory, 1); Bitmap Tmap = new Bitmap(VCodeString.Length * 19, 24); Graphics TGrphics; TGrphics = Graphics.FromImage(Tmap); TGrphics.Clear(BackGroundColor(0, 255)); //产生干扰线 for (int i = 1; i <= 6; i++) { int TmpPosition = i * 4; Color LineColor = BackGroundColor(0, 255); LinePen.Color = LineColor; TGrphics.DrawLine(LinePen, 0, TmpPosition, VCodeString.Length * 19, 0); LineColor = BackGroundColor(0, 255); LinePen.Color = LineColor; TGrphics.DrawLine(LinePen, 0, 24, VCodeString.Length * 19, TmpPosition); } //产生干扰线 TGrphics.DrawString(VCodeString, VCodeFont, VCodeBrush, VCodeString.Length, 1); Tmap.Save(ImageMemoryStream, System.Drawing.Imaging.ImageFormat.Png); Tmap.Dispose(); TGrphics.Dispose(); return ImageMemoryStream; } #region 随机返回背景色 /// <summary> /// 随机返回颜色 /// </summary> /// <param name="BeginRandomNumber">指定颜色开始的最小值 </param> /// <param name="RandomNumber">指定颜色值波动的范围 </param> /// <returns>随机的Color </returns> private Color BackGroundColor( int BeginRandomNumber , int RandomNumber ) { int ColorR = 0 ; int ColorG = 0 ; int ColorB = 0 ; Random TRandom = new Random() ; ColorR = BeginRandomNumber + TRandom.Next( RandomNumber ) ; ColorG = BeginRandomNumber + TRandom.Next( RandomNumber ) ; ColorB = BeginRandomNumber + TRandom.Next( RandomNumber ) ; Color ColorBG = Color.FromArgb( ColorR , ColorG , ColorB ) ; return ColorBG ; } #endregion Response.ClearContent(); Response.ContentType = "images/Png"; Response.BinaryWrite(GetVImageStream().ToArray()); http://blog.csdn.net/linzonghua234/archive/2008/02/28/2128595.aspx /// <summary> /// 该方法是将生成的随机数写入图像文件 /// </summary> /// <param name="VNum">VNum是一个随机数</param> private void ValidateCode(string VNum) { Bitmap Img=null; Graphics g=null; MemoryStream ms=null; int gheight=VNum.Length*12;//定义图像的大小 Img=new Bitmap(gheight,25);//生成图像的实例 g=Graphics.FromImage(Img);//从Img对象生成新的Graphics对象 Font f=new Font("Arial Black",10);//生成Font类的实例 SolidBrush s=new SolidBrush(Color.White);//生成笔刷类的实例 g.DrawString(VNum,f,s,3,3);//将VNum写入图片中 ms=new MemoryStream();//生成内存流对象 Img.Save(ms,ImageFormat.Jpeg);//将此图像以Png图像文件的格式保存到流中 Response.ClearContent();//更改http ContentType Response.ContentType="image/Jpeg"; Response.BinaryWrite(ms.ToArray());//将整个二进制流的内容写入字节数组 //回收资源 g.Dispose(); Img.Dispose(); Response.End(); } /// <summary> /// 该方法用于生成指定位数的随机数 /// </summary> /// <param name="VcodeNum">参数是随机数的位数</param> /// <returns>返回一个随机数字符串</returns> private string RndNum(int VcodeNum) { 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,v,w,x,y,z,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[] VcArray=Vchar.Split(new Char [] {','});//拆分成数组 string VNum=""; int temp=-1;//记录上次随机数值,尽量避避免生产几个一样的随机数 Random rand=new Random(); //采用一个简单的算法以保证生成随机数的不同 for(int i=1;i<VcodeNum+1;i++) { if(temp!=-1) { rand=new Random(i*temp*unchecked((int)DateTime.Now.Ticks)); } int t=rand.Next(61); if(temp!=-1&&temp==t) { return RndNum(VcodeNum); } temp=t; VNum+=VcArray[t]; } return VNum; } 代码太多了,楼主只要在google里面输入,asp.net 验证码,结果一大堆http://www.jb51.net/article/9492.htm.......... http://www.cnblogs.com/82767136/articles/1384664.htmlhttp://www.cnblogs.com/HappyQQ/archive/2008/04/16/1155945.html搜索下很多 !!用webbrowser控件对网页截图是空白的~急!! C# winform改变皮肤问题 关于如何实现命令行 C# DataGrid列只能输入数字 c#中怎么打开文件 C#中,如何动态定义数据库连接? 关于.NET混淆器的问题! 求反编译工具。能够将dll 进行反编译。 SOAP client 连接 输入法问题 来帮我一把啊,不会太难 C# windows程序 关于声音识别
http://hi.baidu.com/skyjoy2006/blog/item/ea39ca54ecb16b5bd009067a.html
http://dev.csdn.net/article/73/73816.shtm自己Google下
这东西太多了
{
string[] source ={ "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "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 code = "";
Random rd = new Random();
for (int i = 0; i < num; i++)
{
code += source[rd.Next(0, source.Length)];
}
return code;
}
private MemoryStream GetVImageStream()
{
MemoryStream ImageMemoryStream = new MemoryStream();
string VCodeString = GetCode(4);
Session["HCValidateCode"] = VCodeString;
Font VCodeFont = new Font("Arial", 14, FontStyle.Bold);
SolidBrush VCodeBrush = new SolidBrush(Color.SandyBrown);
Pen LinePen = new Pen(Color.Ivory, 1);
Bitmap Tmap = new Bitmap(VCodeString.Length * 19, 24);
Graphics TGrphics;
TGrphics = Graphics.FromImage(Tmap);
TGrphics.Clear(BackGroundColor(0, 255));
//产生干扰线
for (int i = 1; i <= 6; i++)
{
int TmpPosition = i * 4;
Color LineColor = BackGroundColor(0, 255);
LinePen.Color = LineColor;
TGrphics.DrawLine(LinePen, 0, TmpPosition, VCodeString.Length * 19, 0);
LineColor = BackGroundColor(0, 255);
LinePen.Color = LineColor;
TGrphics.DrawLine(LinePen, 0, 24, VCodeString.Length * 19, TmpPosition);
}
//产生干扰线
TGrphics.DrawString(VCodeString, VCodeFont, VCodeBrush, VCodeString.Length, 1);
Tmap.Save(ImageMemoryStream, System.Drawing.Imaging.ImageFormat.Png);
Tmap.Dispose();
TGrphics.Dispose();
return ImageMemoryStream;
} #region 随机返回背景色
/// <summary>
/// 随机返回颜色
/// </summary>
/// <param name="BeginRandomNumber">指定颜色开始的最小值 </param>
/// <param name="RandomNumber">指定颜色值波动的范围 </param>
/// <returns>随机的Color </returns>
private Color BackGroundColor( int BeginRandomNumber , int RandomNumber )
{
int ColorR = 0 ;
int ColorG = 0 ;
int ColorB = 0 ;
Random TRandom = new Random() ;
ColorR = BeginRandomNumber + TRandom.Next( RandomNumber ) ;
ColorG = BeginRandomNumber + TRandom.Next( RandomNumber ) ;
ColorB = BeginRandomNumber + TRandom.Next( RandomNumber ) ;
Color ColorBG = Color.FromArgb( ColorR , ColorG , ColorB ) ;
return ColorBG ;
}
#endregion
Response.ClearContent();
Response.ContentType = "images/Png";
Response.BinaryWrite(GetVImageStream().ToArray());
/// 该方法是将生成的随机数写入图像文件
/// </summary>
/// <param name="VNum">VNum是一个随机数</param>
private void ValidateCode(string VNum)
{
Bitmap Img=null;
Graphics g=null;
MemoryStream ms=null; int gheight=VNum.Length*12;//定义图像的大小
Img=new Bitmap(gheight,25);//生成图像的实例
g=Graphics.FromImage(Img);//从Img对象生成新的Graphics对象
Font f=new Font("Arial Black",10);//生成Font类的实例
SolidBrush s=new SolidBrush(Color.White);//生成笔刷类的实例
g.DrawString(VNum,f,s,3,3);//将VNum写入图片中
ms=new MemoryStream();//生成内存流对象
Img.Save(ms,ImageFormat.Jpeg);//将此图像以Png图像文件的格式保存到流中
Response.ClearContent();//更改http ContentType
Response.ContentType="image/Jpeg";
Response.BinaryWrite(ms.ToArray());//将整个二进制流的内容写入字节数组
//回收资源
g.Dispose();
Img.Dispose();
Response.End(); }
/// <summary>
/// 该方法用于生成指定位数的随机数
/// </summary>
/// <param name="VcodeNum">参数是随机数的位数</param>
/// <returns>返回一个随机数字符串</returns>
private string RndNum(int VcodeNum)
{
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,v,w,x,y,z,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[] VcArray=Vchar.Split(new Char [] {','});//拆分成数组
string VNum="";
int temp=-1;//记录上次随机数值,尽量避避免生产几个一样的随机数 Random rand=new Random();
//采用一个简单的算法以保证生成随机数的不同
for(int i=1;i<VcodeNum+1;i++)
{
if(temp!=-1)
{
rand=new Random(i*temp*unchecked((int)DateTime.Now.Ticks));
}
int t=rand.Next(61);
if(temp!=-1&&temp==t)
{
return RndNum(VcodeNum); }
temp=t;
VNum+=VcArray[t];
}
return VNum;
}
..........
http://www.cnblogs.com/HappyQQ/archive/2008/04/16/1155945.html
搜索下很多