zoukankan
html css js c++ java
验证码 生成变形的文字
using
System;
using
System.IO;
using
System.Web;
using
System.Web.UI;
using
System.Drawing;
using
System.Drawing.Drawing2D;
using
System.Drawing.Imaging;
namespace
Mis.Pages
{
public
class
think_test:System.Web.UI.Page
{
protected
System.Web.UI.WebControls.TextBox TextBox1;
protected
System.Web.UI.WebControls.Button Button1;
private
Random rand
=
new
Random();
protected
override
void
OnInit(EventArgs e)
{
base
.OnInit(e);
this
.Load
+=
new
System.EventHandler(
this
.Page_Load);
}
private
void
Page_Load(
object
sender, System.EventArgs e)
{
string
checkCode
=
CreateRandomCode(
8
);
Session[
"
CheckCode
"
]
=
checkCode;
CreateImage(checkCode);
}
Web 窗体设计器生成的代码
#region
Web 窗体设计器生成的代码
/**/
///
<summary>
///
设计器支持所需的方法 - 不要使用代码编辑器修改
///
此方法的内容。
///
</summary>
private
void
InitializeComponent()
{
this
.Button1.Click
+=
new
System.EventHandler(
this
.Button1_Click);
this
.Load
+=
new
System.EventHandler(
this
.Page_Load);
}
#endregion
private
string
CreateRandomCode(
int
codeCount)
{
string
allChar
=
"
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,W,X,Y,Z
"
;
string
[] allCharArray
=
allChar.Split(
'
,
'
);
string
randomCode
=
""
;
int
temp
=
-
1
;
for
(
int
i
=
0
; i
<
codeCount; i
++
)
{
if
(temp
!=
-
1
)
{
rand
=
new
Random(i
*
temp
*
((
int
)DateTime.Now.Ticks));
}
int
t
=
rand.Next(
35
);
if
(temp
==
t)
{
return
CreateRandomCode(codeCount);
}
temp
=
t;
randomCode
+=
allCharArray[t];
}
return
randomCode;
}
private
void
TransformG(Graphics g)
{
Matrix myMatrix
=
new
Matrix();
int
num1
=
rand.Next(
80
,
900
);
int
num2
=
rand.Next(
80
,
800
);
float
dd1
=
(
float
)num1;
float
dd2
=
(
float
)num2;
dd1
=
dd1
/
10000
;
dd2
=
dd2
/
10000
;
float
f1
=
(
float
)(dd1);
float
f2
=
(
float
)(dd2);
myMatrix.Shear(f1,f2);
g.MultiplyTransform(myMatrix);
}
private
void
CreateImage(
string
checkCode)
{
int
iwidth
=
(
int
)(checkCode.Length
*
11.5
);
System.Drawing.Bitmap image
=
new
System.Drawing.Bitmap(
150
,
46
);
Graphics g
=
Graphics.FromImage(image);
g.SmoothingMode
=
SmoothingMode.HighQuality;
Font f
=
new
System.Drawing.Font(
"
Arial
"
,
18
, System.Drawing.FontStyle.Regular);
Brush b
=
new
System.Drawing.SolidBrush(Color.LightSlateGray);
Rectangle rect
=
new
Rectangle(
0
,
0
,
150
,
46
);
HatchBrush hatchBrush
=
new
HatchBrush(
HatchStyle.SmallConfetti,
Color.LightGray,
Color.White);
g.FillRectangle(hatchBrush, rect);
Point[] myArray
=
{
new
Point(rand.Next(
150
),rand.Next(
46
)),
new
Point(rand.Next(
150
),rand.Next(
46
)),
new
Point(rand.Next(
150
),rand.Next(
46
)),
new
Point(rand.Next(
150
),rand.Next(
46
)),
new
Point(rand.Next(
150
),rand.Next(
46
)),
new
Point(rand.Next(
150
),rand.Next(
46
)),
new
Point(rand.Next(
150
),rand.Next(
46
)),
new
Point(rand.Next(
150
),rand.Next(
46
)),
new
Point(rand.Next(
150
),rand.Next(
46
)),
new
Point(rand.Next(
150
),rand.Next(
46
))
}
;
Pen myPen
=
new
Pen(Color.Blue,
1
);
GraphicsPath myPath
=
new
GraphicsPath();
myPath.AddBeziers(myArray);
g.DrawPath(myPen, myPath);
SizeF size;
float
CPostion
=
1
;
for
(
int
i
=
0
;i
<
checkCode.Length;i
++
)
{
TransformG(g);
size
=
g.MeasureString(checkCode[i].ToString(), f);
g.DrawString(checkCode[i].ToString(), f, b, CPostion,
7
);
CPostion
+=
size.Width
-
1
;
g.ResetTransform();
}
System.IO.MemoryStream ms
=
new
System.IO.MemoryStream();
image.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);
g.Dispose();
image.Dispose();
Response.ClearContent();
Response.ContentType
=
"
image/Jpeg
"
;
Response.BinaryWrite(ms.ToArray());
}
private
void
Button1_Click(
object
sender, System.EventArgs e)
{
}
}
}
查看全文
相关阅读:
Java斗地主--001版本
集合----方法的可变参数
浅谈--Java编译期异常+运行期异常
JavaSE编程基础(一)
JavaSE编程基础(三)
JavaSE编程基础(二)
软件测试(三十)
软件测试(二十九)
软件测试(二十七)
软件测试(二十八)
原文地址:https://www.cnblogs.com/ghd258/p/253059.html
最新文章
数据结构面试
Linux基础
正则化
机器学习基础
request.getRequestURI().indexOf是什么意思
过滤器概述
JSP标签技术
JSP介绍
session
cookie的API
热门文章
给浏览器添加coockie信息
会话技术
c3p0使用连接时连接mysql数据库
ServletContext简介
配置spring
配置junit单元测试
配置JDK插件
Servlet的生命周期
Mybatis中Mapper.xml文件sql中动态获取---->#{}和${}区别
数据库连接池!!
Copyright © 2011-2022 走看看