验证码的样式,谁有好一点的。 http://ghd258.cnblogs.com/Modules/CaptchaImage/JpegImage.aspx这种效果的验证码谁有呀,我做的图片显示很慢,看上去也很粗糙。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 /// <summary> /// 根据字符串获得图片流,By Bytesoon 2005-7-20 /// </summary> /// <param name="ImgWidth">图片宽度</param> /// <param name="ImgHeight">图片高度</param> /// <param name="CodeString">验证串(来自验证串产生算法)</param> /// <param name="g">绘图设备对象(GDI+)</param> public static void ConvertStr2Img(int ImgWidth,int ImgHeight,string CodeString,ref Graphics g) { if(null == g)return; RectangleF lRect = new RectangleF(0,0,(float)ImgWidth,(float)ImgHeight); Font _f = new Font("Arial",ImgHeight-4,GraphicsUnit.Pixel); g.FillRectangle(Brushes.LightGray,0,0,ImgWidth,ImgHeight); Point [] p = new Point[5]; Random r = new Random(); for(int i=0;i<p.Length;i++) { p[i].X = r.Next(i,ImgWidth); p[i].Y = r.Next(i,ImgHeight); } g.DrawCurve(Pens.DarkGray,p); g.DrawString(CodeString,_f,Brushes.DimGray,lRect); }------------------------------------我的团队:www.51team.com欢迎访问,有志者共谋事,每天都有惊喜,SOHO http://blog.csdn.net/chengking/archive/2005/10/07/496615.aspx 需要请发邮件给我:[email protected] 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 WLNet.IFrame{/// <summary>/// ValidationCodeImg 的摘要说明。/// </summary>public class ValidationCodeImg : System.Web.UI.Page{private void Page_Load(object sender, System.EventArgs e){if(!IsPostBack){this.CreateCheckCodeImage(GenerateCheckCode());}}#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);}#endregionprivate string GenerateCheckCode(){int number;char code;string checkCode = String.Empty;System.Random random = new Random();for(int i=0; i<4; i++){number = random.Next();//if(number % 2 == 0)code = (char)('0' + (char)(number % 10));//else//code = (char)('A' + (char)(number % 26));checkCode += code.ToString();}Response.Cookies.Add(new HttpCookie("CheckCode", checkCode));return checkCode;}private void CreateCheckCodeImage(string checkCode){if(checkCode == null || checkCode.Trim() == String.Empty)return;System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 20);Graphics g = Graphics.FromImage(image);try{//生成随机生成器//Random random = new Random();//清空图片背景色g.Clear(Color.White);//画图片的背景噪音线//for(int i=0; i<25; i++)//{//int x1 = random.Next(image.Width);//int x2 = random.Next(image.Width);//int y1 = random.Next(image.Height);//int y2 = random.Next(image.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, image.Width, image.Height), Color.Black, Color.Black, 1.2f, true);g.DrawString(checkCode, font, brush, 2, 2);//画图片的前景噪音点//for(int i=0; i<100; i++)//{//int x = random.Next(image.Width);//int y = random.Next(image.Height);////image.SetPixel(x, y, Color.FromArgb(random.Next()));//}//画图片的边框线g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);System.IO.MemoryStream ms = new System.IO.MemoryStream();image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);Response.ClearContent();Response.ContentType = "image/Gif";Response.BinaryWrite(ms.ToArray());}finally{g.Dispose();image.Dispose();}}}}把以上代码放入一个页面的CS文件中,注意修改窗体和项目的名称以上是生成验证码的代码(使用Drawing画出来的),注释掉的是一些背景,还有字母,我去掉了,你也可以把注释去掉。然后在你要用验证码的页面放一个Image,然后src='你的这个页面',验证码就可以显示了如果想要得到验证码,上面用COOKIE保存的生成的验证码用Request.Cookies["CheckCode"].Value得到验证码的值当然,你要的样式可以在代码里根据自己的需要修改,如果颜色,字体等 编辑器内容插入数据库被截断 net中动态加载树,该如何写? 利用.net 如何完成维文、老维文、英维文之间的互译 刚入门想模仿一个网站做做,请各位大侠指点哪个网站比较合适 用c#写,怎么让页面里弹出个类似messagebox的消息框 如何在javascript脚本中对网格中新增的行赋值? 求一个支持多域的单点登陆,急用谢谢哈 关于ListBox控件的SelectedIndex属性! 为什么在刷新页面的时候也会触发Button_Click事件呢? 母版页的子页使用jquery不起作用! 有没办法定义这种类型的变量? 一个并发问题的解决方案
/// 根据字符串获得图片流,By Bytesoon 2005-7-20
/// </summary>
/// <param name="ImgWidth">图片宽度</param>
/// <param name="ImgHeight">图片高度</param>
/// <param name="CodeString">验证串(来自验证串产生算法)</param>
/// <param name="g">绘图设备对象(GDI+)</param>
public static void ConvertStr2Img(int ImgWidth,int ImgHeight,string CodeString,ref Graphics g)
{
if(null == g)return; RectangleF lRect = new RectangleF(0,0,(float)ImgWidth,(float)ImgHeight);
Font _f = new Font("Arial",ImgHeight-4,GraphicsUnit.Pixel);
g.FillRectangle(Brushes.LightGray,0,0,ImgWidth,ImgHeight);
Point [] p = new Point[5];
Random r = new Random();
for(int i=0;i<p.Length;i++)
{
p[i].X = r.Next(i,ImgWidth);
p[i].Y = r.Next(i,ImgHeight);
}
g.DrawCurve(Pens.DarkGray,p);
g.DrawString(CodeString,_f,Brushes.DimGray,lRect); }
------------------------------------
我的团队:www.51team.com欢迎访问,有志者共谋事,每天都有惊喜,SOHO
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 WLNet.IFrame
{
/// <summary>
/// ValidationCodeImg 的摘要说明。
/// </summary>
public class ValidationCodeImg : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
{
this.CreateCheckCodeImage(GenerateCheckCode());
}
}#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);}
#endregionprivate string GenerateCheckCode()
{
int number;
char code;
string checkCode = String.Empty;System.Random random = new Random();for(int i=0; i<4; i++)
{
number = random.Next();//if(number % 2 == 0)
code = (char)('0' + (char)(number % 10));
//else
//code = (char)('A' + (char)(number % 26));checkCode += code.ToString();
}Response.Cookies.Add(new HttpCookie("CheckCode", checkCode));return checkCode;
}private void CreateCheckCodeImage(string checkCode)
{
if(checkCode == null || checkCode.Trim() == String.Empty)
return;System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 20);
Graphics g = Graphics.FromImage(image);try
{
//生成随机生成器
//Random random = new Random();//清空图片背景色
g.Clear(Color.White);//画图片的背景噪音线
//for(int i=0; i<25; i++)
//{
//int x1 = random.Next(image.Width);
//int x2 = random.Next(image.Width);
//int y1 = random.Next(image.Height);
//int y2 = random.Next(image.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, image.Width, image.Height), Color.Black, Color.Black, 1.2f, true);
g.DrawString(checkCode, font, brush, 2, 2);//画图片的前景噪音点
//for(int i=0; i<100; i++)
//{
//int x = random.Next(image.Width);
//int y = random.Next(image.Height);
//
//image.SetPixel(x, y, Color.FromArgb(random.Next()));
//}//画图片的边框线
g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);System.IO.MemoryStream ms = new System.IO.MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
Response.ClearContent();
Response.ContentType = "image/Gif";
Response.BinaryWrite(ms.ToArray());
}
finally
{
g.Dispose();
image.Dispose();
}
}
}
}把以上代码放入一个页面的CS文件中,注意修改窗体和项目的名称
以上是生成验证码的代码(使用Drawing画出来的),注释掉的是一些背景,还有字母,我去掉了,你也可以把注释去掉。
然后在你要用验证码的页面放一个Image,然后src='你的这个页面',验证码就可以显示了
如果想要得到验证码,上面用COOKIE保存的生成的验证码
用Request.Cookies["CheckCode"].Value得到验证码的值
当然,你要的样式可以在代码里根据自己的需要修改,如果颜色,字体等