
以下是全部代码:
1
source#region source
2
using System;
3
using System.Collections;
4
using System.ComponentModel;
5
using System.Data;
6
using System.Drawing;
7
using System.Web;
8
using System.Web.SessionState;
9
using System.Web.UI;
10
using System.Web.UI.WebControls;
11
using System.Web.UI.HtmlControls;
12
#endregion
13
14
namespace ListNews
15

{
16
/**//// <summary>
17
/// ValidateCode 的摘要说明。
18
/// </summary>
19
public class ValidateCode : System.Web.UI.Page
20
{
21
页面载入#region 页面载入
22
private void Page_Load(object sender, System.EventArgs e)
23
{
24
CreateCheckCodeImage(GenerateCheckCode(4));
25
}
26
#endregion
27
28
Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码
29
override protected void OnInit(EventArgs e)
30
{
31
//
32
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
33
//
34
InitializeComponent();
35
base.OnInit(e);
36
}
37
38
/**//// <summary>
39
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
40
/// 此方法的内容。
41
/// </summary>
42
private void InitializeComponent()
43
{
44
this.Load += new System.EventHandler(this.Page_Load);
45
}
46
#endregion
47
48
Method GenerateCheckCode#region Method GenerateCheckCode
49
/**//// <summary>
50
///
51
/// </summary>
52
/// <param name="codeCount"></param>
53
/// <returns></returns>
54
private string GenerateCheckCode(int codeCount)
55
{
56
int number;
57
char code;
58
string checkCode = String.Empty;
59
60
System.Random random = new Random();
61
62
for(int i=0; i<codeCount; i++)
63
{
64
number = random.Next();
65
66
if(number % 2 == 0)
67
code = (char)('0' + (char)(number % 10));
68
else
69
code = (char)('A' + (char)(number % 26));
70
71
checkCode += code.ToString();
72
}
73
74
//Response.Cookies.Add(new HttpCookie("CheckCode", checkCode));
75
76
return checkCode;
77
}
78
79
#endregion
80
81
Method CreateCheckCodeImage#region Method CreateCheckCodeImage
82
/**//// <summary>
83
///
84
/// </summary>
85
/// <param name="checkCode"></param>
86
private void CreateCheckCodeImage(string checkCode)
87
{
88
if(checkCode == null || checkCode.Trim() == String.Empty)
89
return;
90
91
System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22);
92
Graphics g = Graphics.FromImage(image);
93
94
try
95
{
96
//生成随机生成器
97
Random random = new Random();
98
99
//清空图片背景色
100
g.Clear(Color.White);
101
102
//画图片的背景噪音线
103
for(int i=0; i<25; i++)
104
{
105
int x1 = random.Next(image.Width);
106
int x2 = random.Next(image.Width);
107
int y1 = random.Next(image.Height);
108
int y2 = random.Next(image.Height);
109
110
g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);
111
}
112
113
Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));
114
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);
115
g.DrawString(checkCode, font, brush, 2, 2);
116
117
//画图片的前景噪音点
118
for(int i=0; i<100; i++)
119
{
120
int x = random.Next(image.Width);
121
int y = random.Next(image.Height);
122
123
image.SetPixel(x, y, Color.FromArgb(random.Next()));
124
}
125
126
//画图片的边框线
127
g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);
128
129
System.IO.MemoryStream ms = new System.IO.MemoryStream();
130
image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
131
Response.ClearContent();
132
Response.ContentType = "image/Gif";
133
Response.BinaryWrite(ms.ToArray());
134
}
135
finally
136
{
137
g.Dispose();
138
image.Dispose();
139
}
140
}
141
#endregion
142
}
143
}
144


2

3

4

5

6

7

8

9

10

11

12

13

14

15



16


17

18

19

20



21


22

23



24

25

26

27

28


29

30



31

32

33

34

35

36

37

38


39

40

41

42

43



44

45

46

47

48


49


50

51

52

53

54

55



56

57

58

59

60

61

62

63



64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81


82


83

84

85

86

87



88

89

90

91

92

93

94

95



96

97

98

99

100

101

102

103

104



105

106

107

108

109

110

111

112

113

114

115

116

117

118

119



120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136



137

138

139

140

141

142

143

144
