using
System;
using
System.Collections;
using
System.Data;
using
System.Linq;
using
System.Web;
using
System.Web.Services;
using
System.Web.Services.Protocols;
using
System.Xml.Linq;
using
System.Web.SessionState;
using
System.Drawing;
namespace
usechecknum.ashx
{
/// <summary>
/// $codebehindclassname$ 的摘要说明
/// </summary>
[WebService(Namespace =
"http://tempuri.org/"
)]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public
class
doCreateNum : IHttpHandler,IRequiresSessionState
{
public
void
ProcessRequest(HttpContext context)
{
context.Response.ContentType =
"text/html"
;
string
checkCode = GetValidation(5);
context.Session[
"Code"
] = checkCode;
System.Drawing.Bitmap image =
new
System.Drawing.Bitmap(70, 22);
Graphics g = Graphics.FromImage(image);
try
{
Random random =
new
Random();
g.Clear(Color.White);
int
i;
for
(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.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, 2, 2);
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);
context.Response.ClearContent();
context.Response.ContentType =
"image/Gif"
;
context.Response.BinaryWrite(ms.ToArray());
}
finally
{
g.Dispose();
image.Dispose();
}
}
public
string
GetValidation(
int
num)
{
string
str =
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
;
string
validatecode =
""
;
Random rd =
new
Random();
for
(
int
i = 0; i < num; i++)
{
validatecode += str.Substring(rd.Next(0, str.Length), 1);
}
return
validatecode;
}
public
bool
IsReusable
{
get
{
return
false
;
}
}
}
}