验证码CS文件完整代码:
2008-10-08 14:23
239 查看
使用者请根据自己使用摘取page_load()事件和其他的方法.
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;
public partial class UserVote_CheckCode : System.Web.UI.Page
{
protected void Page_Load(object sender, System.EventArgs e)
{
CreateCheckCodeImage(GenerateCheckCode());
}
private string GenerateCheckCode()
{
int number;
char code;
string checkCode = String.Empty;
Random random = new Random();
for (int i = 0; i < 5; i++)
{
number = random.Next();
if (number % 2 == 0)
code = (char)('0' + (char)(number % 10));
else
code = (char)('A' + (char)(number % 26));
checkCode += code.ToString();
}
Session["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 * 13.5)), 22);
Graphics g = Graphics.FromImage(image);
try
{
//生成随机生成器
Random random = new Random();
//清空图片背景色
g.Clear(Color.White);
//画图片的背景噪音线
for (int i = 0; i < 16; 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", 14, (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.Blue, Color.DarkRed, 1.2f, true);
g.DrawString(checkCode, font, brush, 1, 0);
//画图片的前景噪音点
for (int i = 0; i < 100; i++)
{
int x = random.Next(image.Width);
int y = random.Next(image.Height);
//Bitmap.SetPixel 方法 :设置 Bitmap 对象中指定像素的颜色。
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();
}
}
}
建立一个新的ASPX页面,调用刚才的ASPX页(验证码的页面什么都没有)
<img id="imgVerify" src="CommonControl/CheckCode.aspx" alt="看不清?点击更换" onclick="this.src=this.src+'?'" />
其中CommonControl/CheckCode.aspx是我调用的验证码也面的名字,onclick="this.src=this.src+'?'"代表图片地址重定向,这样不会引起整个页面刷新才会改变验证码!
在第一段代码中定义了一个SESSION,用来传验证码,你可以取到该值进行判断哦:)
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;
public partial class UserVote_CheckCode : System.Web.UI.Page
{
protected void Page_Load(object sender, System.EventArgs e)
{
CreateCheckCodeImage(GenerateCheckCode());
}
private string GenerateCheckCode()
{
int number;
char code;
string checkCode = String.Empty;
Random random = new Random();
for (int i = 0; i < 5; i++)
{
number = random.Next();
if (number % 2 == 0)
code = (char)('0' + (char)(number % 10));
else
code = (char)('A' + (char)(number % 26));
checkCode += code.ToString();
}
Session["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 * 13.5)), 22);
Graphics g = Graphics.FromImage(image);
try
{
//生成随机生成器
Random random = new Random();
//清空图片背景色
g.Clear(Color.White);
//画图片的背景噪音线
for (int i = 0; i < 16; 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", 14, (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.Blue, Color.DarkRed, 1.2f, true);
g.DrawString(checkCode, font, brush, 1, 0);
//画图片的前景噪音点
for (int i = 0; i < 100; i++)
{
int x = random.Next(image.Width);
int y = random.Next(image.Height);
//Bitmap.SetPixel 方法 :设置 Bitmap 对象中指定像素的颜色。
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();
}
}
}
建立一个新的ASPX页面,调用刚才的ASPX页(验证码的页面什么都没有)
<img id="imgVerify" src="CommonControl/CheckCode.aspx" alt="看不清?点击更换" onclick="this.src=this.src+'?'" />
其中CommonControl/CheckCode.aspx是我调用的验证码也面的名字,onclick="this.src=this.src+'?'"代表图片地址重定向,这样不会引起整个页面刷新才会改变验证码!
在第一段代码中定义了一个SESSION,用来传验证码,你可以取到该值进行判断哦:)
相关文章推荐
- eployee.aspx.cs文件的完整代码
- OpenSSL 加密文件的完整实现代码
- 服务器基于PHP CodeIgniter,Android基于Volley实现多文件/图片上传(含服务器,web版和android客户端完整代码)
- 一些web开发中常用的、做成cs文件的js代码 (转)
- asp.net Web Services上传和下载文件(完整代码)
- 上传时获取文件的完整路径图片预览的js代码(兼容Firfox和IE)
- [导入]一些web开发中常用的、做成cs文件的js代码 - 搜刮来的
- 实现通用 Web CAPTCHA 图形验证码 JavaScript 脚本 API 服务 (JavaScript 脚本动态页面引用) 完整代码
- C#一个完整的执行ping命令的.cs文件,可编译成.dll文件用
- 数据库连接的两种实现方式(读取配置文件)——DBCP&C3P0;DBCP实现连接代码,C3P0实现连接代码——包含完整代码
- 机器狗穿透还原的磁盘级文件读写完整驱动代码
- 一些web开发中常用的、做成cs文件的js代码
- 关于在cs文件中输出js的alert代码
- Java中实现FTP上传下载文件的功能,完整代码
- js动画效果(贴一个完整的代码,附js文件写法)
- 一些web开发中常用的、做成cs文件的js代码 - 搜刮来的
- python ftplib 定时上传文件完整代码。
- 自己动手写中文分词解析器完整教程,并对出现的问题进行探讨和解决(附完整c#代码和相关dll文件、txt文件下载)
- 根据文件头检测文件类型的完整代码
- C# 完整上传文件 代码