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)
{
}
}
}
查看全文
相关阅读:
LA 3026 Period
Touch
Uva 11762 Race to 1
清北学堂模拟赛d1t2 火柴棒 (stick)
清北学堂模拟赛d1t1 位运算1(bit)
常州模拟赛d8t2 绘画
常州模拟赛d8t1 友好数对
常州模拟赛d5t3 appoint
常州模拟赛d7t1 亲戚
常州模拟赛d7t3 水管
原文地址:https://www.cnblogs.com/ghd258/p/253059.html
最新文章
JavaWeb网上图书商城完整项目--11.项目所需jquery函数介绍
JavaWeb网上图书商城完整项目--验证码
JavaWeb网上图书商城完整项目--过滤器解决中文乱码
label标签跳出循环
JavaScript 变量生命周期
addEventListener和on的区别
css3,background-clip/background-origin的使用场景,通俗讲解
javascript移动端滑屏事件
s中的闭包
什么是作用域链,什么是原型链,它们的区别,在js中它们具体指什么?
热门文章
js中的执行上下文,菜鸟入门基础。
理解js中的自由变量以及作用域的进阶
深入作用域之静态作用域与动态作用域
Codeforces 932 E Team Work
Codeforces 757 E Bash Plays with Functions
LA 3713 Astronauts
Uva 11922 Permutation Transformer
[HNOI2013]游走
Uva 11542 Square
Uva 11077 Find the Permutation
Copyright © 2011-2022 走看看