摘要:[C#]簡單實做Captcha (完全用.Net內建函式)
看到保哥的這篇實做Captcha,所以我手癢的也自己try了一下,當然主要還是參考保哥的那篇。
01 
using (Bitmap bmp = new Bitmap(90, 30))
02
{
03
int x1 = 0;
04
int y1 = 0;
05
int x2 = 0;
06
int y2 = 0;
07
int x3 = 0;
08
int y3 = 0;
09
int intNoiseWidth = 25;
10
int intNoiseHeight = 15;
11
Random rdn = new Random();
12
Graphics g = Graphics.FromImage(bmp);
13
14
//設定字型
15
Font font = new Font("Courier New", 12, FontStyle.Bold);
16
17
//設定圖片背景
18
g.Clear(Color.Cornsilk);
19
20
//產生雜點
21
for (int i = 0; i < 80; i++)
22
{
23
x1 = rdn.Next(0, bmp.Width);
24
y1 = rdn.Next(0, bmp.Height);
25
bmp.SetPixel(x1, y1, Color.Brown);
26
}
27
28
//產生擾亂弧線
29
for (int i = 0; i < 15; i++)
30
{
31
x1 = rdn.Next(bmp.Width - intNoiseWidth);
32
y1 = rdn.Next(bmp.Height - intNoiseHeight);
33
x2 = rdn.Next(1, intNoiseWidth);
34
y2 = rdn.Next(1, intNoiseHeight);
35
x3 = rdn.Next(0, 45);
36
y3 = rdn.Next(-270, 270);
37
g.DrawArc(new Pen(Brushes.Gray), x1, y1, x2, y2, x3, y3);
38
}
39
40
//把GenPassword()方法換成你自己的密碼產生器,記得把產生出來的密碼存起來日後才能與user的輸入做比較。
41
g.DrawString(GenPassword(6), font, Brushes.Black, 3, 3);
42
43
//你可以直接輸出到web page像保哥一樣,我這邊選擇儲存成GIF檔案。
44
bmp.Save(@"C:\Temp\Captcha.gif", ImageFormat.Gif);
45
}


02

03

04

05

06

07

08

09

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

下面是輸出的結果