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)
{
}
}
}
查看全文
相关阅读:
js监听手机端点击物理返回键或js监听pc端点击浏览器返回键
mysql存储emoji问题
windows环境下 php 将office文件(word/excel/ppt)转化为pdf
javascript 获取多种主流浏览器显示页面高度
iframe 加载外部资源,显示隐藏loading,onload失效
ubuntu 忽略文件的50unattended升级问题
ubuntu apt 软件源的更改
Python3.6连接mysql(一)
H5图片预览、压缩、上传
前端如何上传图片到七牛云
原文地址:https://www.cnblogs.com/ghd258/p/253059.html
最新文章
USB2.0学习笔记连载(十四):USB驱动安装及固件程序的编写
USB学习笔记连载(十三):keil的配置环境
USB学习笔记连载(十二):USB描述符
USB学习笔记连载(十一):CY7C68013A的启动方式-EEPROM
jsp 自定义标签解决jsp页面中int时间戳的时间格式化问题
javaweb中的乱码问题(初次接触时写)
javaweb中的文件上传的一般写法(初次接触时写)
javaweb 与jsp页面的交互流程 (初次接触时写)
ab 站点压力测试工具
java反射机制的简单使用
热门文章
java jdbc操作数据库通用代码
javascript对象序列化(对象与JSON字符串的互换)
css 中 zoom和transform:scale的区别
超小Web手势库AlloyFinger原理
使用php的curl爬去青果教务系统 课表
laravel5.5+vue+Element-ui+vux环境搭建(webpack+laravelMix)
laravel的csrf token 的了解及使用
已知两点的经度和纬度,计算两点间的距离(php,javascript)
js中的异步与同步,解决由异步引起的问题
laravel+阿里大于实现发送验证码短信
Copyright © 2011-2022 走看看