一般网站建设多少钱,网站的导航栏怎么做的,个人购物网站,网新科技集团有限公司GDI#xff1a;Graphics Device Interface Plus也就是图形设备接口,提供了各种丰富的图形图像处理功能;在C#.NET中#xff0c;使用GDI处理二维#xff08;2D#xff09;的图形和图像#xff0c;使用DirectX处理三维#xff08;3D#xff09;的图形图像, 图形图像处理用到…GDIGraphics Device Interface Plus也就是图形设备接口,提供了各种丰富的图形图像处理功能;在C#.NET中使用GDI处理二维2D的图形和图像使用DirectX处理三维3D的图形图像, 图形图像处理用到的主要命名空间是System . Drawing提供了对GDI基本图形功能的访问主要有Graphics类、Bitmap类、从Brush类继承的类、Font类、Icon类、Image类、Pen类、Color类等. 大概了解了什么是GDI后,我们来看一下绘图要用到的主要工具,要画图, 1.要画纸(Map), 2.画画板可以通过Graphics这个类来创建,有了画板, 3.总得弄个笔Pen什么之类的吧,不然怎么画呀,难不成我们用手指画.笔又可以分好多种类,比如铅笔,画刷等.它们的区别主要是铅笔可以用来画线条,而画刷呢,嘿嘿,自己考虑下.在c#中我们可以用Pen,Brush类来实现类似功能. 4.颜料则自然是用Color类了. 1 /// summary2 /// 完美随机验证码3 /// 随机生成设定验证码并随机旋转一定角度字体颜色不同4 /// /summary5 public static class CaptchaHelper6 {7 /// summary8 /// 生成随机码9 /// /summary
10 /// param namelength随机码个数/param
11 /// returns/returns
12 public static string CreateRandonCode(int length)
13 {
14 return Guid.NewGuid().ToString(N).Substring(0, length);
15 }
16
17 /// summary
18 /// 创建随机码图片
19 /// /summary
20 /// param namevcode验证码/param
21 /// param namefontSize字体大小/param
22 /// param namebackground背景颜色/param
23 /// param nameborder边框颜色/param
24 /// returnsGIF图片二进制流/returns
25 public static byte[] DrawImage(string vcode, float fontSize 14, Color background default(Color), Color border default(Color))
26 {
27 //随机旋转角度 基数
28 const int RandAngle 45;
29
30 var width vcode.Length * (int)fontSize;
31
32 //创建图片背景
33 using (var map new Bitmap(width 3, (int)fontSize 10))
34 {
35 using (var graphics Graphics.FromImage(map))
36 {
37 graphics.Clear(background);//清除画面填充背景
38 graphics.DrawRectangle(new Pen(border, 0), 0, 0, map.Width-1, map.Height-1);//画一个边框
39
40 var random new Random();
41
42 //背景噪点生成
43 var blackPen new Pen(Color.DarkGray, 0);
44
45 for (var i 0; i 50; i)
46 {
47 int x random.Next(0, map.Width);
48 int y random.Next(0, map.Height);
49
50 graphics.DrawRectangle(blackPen, x, y, 1, 1);
51 }
52
53 //验证码旋转防止机器识别
54 var chars vcode.ToCharArray();//拆散字符串成单字符数组
55
56 //文字居中
57 var format new StringFormat(StringFormatFlags.NoClip)
58 {
59 Alignment StringAlignment.Center,
60 LineAlignment StringAlignment.Center
61 };
62
63 //定义颜色
64 Color[] colors { Color.Black, Color.DarkBlue, Color.Green, Color.Orange, Color.Brown, Color.DarkCyan, Color.Purple, Color.DarkGoldenrod };
65 FontStyle[] styles { FontStyle.Bold, FontStyle.Italic, FontStyle.Regular, FontStyle.Underline };
66
67 //定义字体
68 string[] fonts { Verdana, Microsoft Sans Serif, Comic Sans MS, Arial, 宋体 };
69 foreach (char item in chars)
70 {
71 int cindex random.Next(8);
72 int findex random.Next(5);
73 int sindex random.Next(4);
74
75 var font new Font(fonts[findex], fontSize, styles[sindex]);//字体样式参数2为字体大小
76 Brush b new SolidBrush(colors[cindex]);
77 var dot new Point(16, 16);
78
79 float angle random.Next(-RandAngle, RandAngle);//转动的度数
80
81 graphics.TranslateTransform(dot.X, dot.Y);//移动光标到指定位置
82 graphics.RotateTransform(angle);
83 graphics.DrawString(item.ToString(CultureInfo.InvariantCulture), font, b, 1, 1, format);
84
85 graphics.RotateTransform(-angle);//转回去
86 graphics.TranslateTransform(2, -dot.Y);//移动光标到指定位置
87
88 }
89 }
90 //生成图片
91 var stream new MemoryStream();
92 map.Save(stream, ImageFormat.Gif);
93 //输出图片流
94 return stream.ToArray();
95 }
96 }
97 } 转载于:https://www.cnblogs.com/WarBlog/p/8484119.html