虽然本人不是搞2d/3d绘图的,但毕竟是搞.net开发的,对于gdi+方面不得不有所了解,而用的最多的就是用gdi+生成注册的验证码。
GDI+:Graphics Device Interface Plus也就是图形设备接口,提供了各种丰富的图形图像处理功能;在C#.NET中,使用GDI+处理二维(2D)的图形和图像,使用DirectX处理三维(3D)的图形图像,图形图像处理用到的主要命名空间是System . Drawing:提供了对GDI+基本图形功能的访问,主要有Graphics类、Bitmap类、从Brush类继承的类、Font类、Icon类、Image类、Pen类、Color类等.
Graphics 画板
Bitmap 位图
Brush 笔刷
Font 字体
Icon 图标
Image 图象
Pen 画笔
Color 颜色
一般来讲,是先建立一个Graphics(画板),再拿一只Brush(笔刷)或者Pen(画笔),选择特定的Font(字体)或Color(颜色),画出一个Bitmap(位图),Icon(图标)或者Image(图象)。
各个类具体怎么使用,大家还是找相关信息查询吧,我在这里只研究画出验证码所用到的类与方法:
1.Graphics(画板)
这是画任意图形都需要用到的类,假想实际画画的时候,如果你没有画板,你如可作画呢?
2.Brush(笔刷)或Pen(画笔)
在这里我将选用Brush作画,其实用Pen道理也是一样的
3.Font(字体)和Color(颜色)
验证码本质上就是将文字转化成图形,我在这里将把使用特定字体的文字转化成特定颜色的图形。
4.Bitmap(位图)
因为最终会显示在界面上,所以必须先将画图结果保存在图形文件中,然后显示出来。
第一步:准备验证码文字。
string _str = "1,2,3,4,5,6,7,8,9,0,q,w,e,r,t,y,u,i,o,p,a,s,d,f,g,h,j,k,l,z,x,c,v,b,n,m";
string str = _str.Split(new char[] { ',' });
具体什么意思就不多讲了。
第二步:生成验证码文字
Random ran = new Random((int)DateTime.Now.Ticks);
string result = "";
for (int i = 0; i < 4; i++)
{
result += str[Math.Abs(ran.Next(str.Length))];
}
在这里使用了随机函数类:Random,然后通过数组下标的形式随机选出四个数字或字母。
第三步:建立位图
Bitmap img = new Bitmap((int)result.Length * 15, 30);
构造函数的参数是width和height,没什么好说的,主要看你要生成多大的验证码图片。
第四步:作图
Graphics g = Graphics.FromImage(img);
g.DrawString(result, new Font("宋体", 13), new SolidBrush(Color.Blue), new PointF(5,5));
首先建立画板,并通过构造函数与位图关联。
然后通过DrawString方法将字符串画成图形,使用了宋体,13号字,使用蓝色笔刷作图,在画板坐标为5,5的地方开始作图。
第五步:将画图结果保存为文件
img.Save(@"c:\a.jpg");
没什么好说的。
好了,以上就是用Gdi+生成验证图片的全过程。
参考文章:
解析.Net框架下的GDI+编程
http://developer.ccidnet.com/art/322/20021217/33871_1.html
使用 GDI+
http://www.cnblogs.com/zuopyu/archive/2005/08/24/221408.html
c# GDI+简单绘图(一)
http://www.cnblogs.com/yangjunwl/articles/1114148.html
c# GDI+简单绘图(二)
http://www.cnblogs.com/yangjunwl/articles/1114152.html
c# GDI+简单绘图(三)
http://www.cnblogs.com/yangjunwl/articles/1114153.html
GDI+实现统计图表控件
http://blog.csdn.net/johnsonTj/archive/2005/02/18/291849.aspx
分享到:
相关推荐
在开发过程中,可以结合压缩包中的"13GDI+绘制验证码"文件进行学习和参考,它可能包含更详细的示例代码和解释,帮助你更好地理解和实现验证码的绘制过程。记得在实际项目中,还要考虑验证码的存储、验证以及安全性的...
5. 使用随机颜色和字体,以扭曲路径的方式绘制验证码文本。 6. 将验证码值保存在服务器端(例如Session)。 7. 将图像输出到HTTP响应流中,使浏览器能够显示验证码。 在实际应用中,我们还需要考虑其他因素,比如...
### C# 使用 GDI+ 技术绘制验证码 在 Web 和桌面应用开发中,验证码(CAPTCHA)是一种常见的安全机制,用于区分用户是人类还是自动程序。本文将详细介绍如何使用 C# 和 GDI+(Graphics Device Interface Plus)技术...
在ASP.NET中,我们可以利用GDI+(Graphics Device Interface Plus)图形库来绘制验证码图像。GDI+是.NET Framework的一部分,提供了丰富的图形绘制功能,包括线条、形状、文本以及颜色处理等。 创建验证码的过程...
- **文字绘制**:使用`DrawString`方法在指定位置绘制验证码字符串,可能使用扭曲、倾斜等效果提高识别难度。 - **线条与点**:绘制随机线条和点以增加干扰。 - **图片保存**:最后将绘制好的验证码图像保存为...
在本主题中,我们将深入探讨如何使用C#.NET和GDI+创建一个简单的网页验证码。 C#.NET是微软开发的一种面向对象的编程语言,它与.NET框架紧密结合,提供了丰富的库和工具来构建各种类型的应用程序,包括Web应用程序...
在IT行业中,网站验证码是一种广泛使用的安全机制,用于防止自动化的机器人或恶意脚本进行非法操作,如批量注册、垃圾邮件发送等。本项目“网站验证码 ASP.NET2.0”利用GDI+技术实现了这一功能,下面将详细介绍相关...
- **图像处理**:使用GDI+库创建一个新的图像,然后在图像上绘制随机颜色的随机形状,遮盖背景,增加干扰线和点。 - **字体混合**:可以使用多个字体和不同的旋转角度,使字符看起来更难以识别但又不超出人类识别...
接下来,使用GDI+的`Graphics`类来绘制验证码。`Graphics`类提供了丰富的绘图方法,如`DrawString()`用于绘制文本,`FillRectangle()`用于填充背景色,`SetClip()`用于设置绘制区域等。通过调整字体样式、大小、颜色...
ASP.NET动态验证码是一种用于验证用户身份的安全机制,广泛应用于网页登录、注册和其他涉及用户交互的安全场景。它通过生成随机的图像和文字组合,要求用户在输入框中输入看到的字符,以此来防止自动化的机器人或者...
7. 在画布上绘制验证码字符串,可以调整位置和颜色。 8. 将位图保存为特定格式的图像数据,例如GIF格式,并将其输出到HTTP响应,设置响应的Content-Type为"image/Gif",以便浏览器能够正确显示验证码图片。 在上述...
- **绘制文本**:利用`Graphics.DrawString()`方法,用随机颜色和角度绘制验证码字符串。可以使用`Font`和`SolidBrush`指定文本样式。 - **添加干扰线**:用`Pen`绘制随机的线条,增加机器识别难度。 - **扭曲...
3. 使用ASP.NET的图形处理功能(如GDI+)绘制数学问题到图像上,确保文本不易被OCR(光学字符识别)技术识别。 4. 将图像发送到浏览器,并将正确答案存储在服务器端的会话或者cookies中,供后续验证使用。 5. 当用户...
你可以使用GDI+(Graphics Device Interface Plus)库来绘制文本。在生成图像的过程中,可以对数字进行扭曲、加噪等操作,使得它们更难以被机器识别,但人眼仍能轻松识别。 3. **设置颜色和字体**:为了增加验证码...
本案例是针对.NET框架,使用C#编程语言和GDI+(Graphics Device Interface)图形库来创建一个简单的验证码生成器。下面我们将详细探讨这些知识点。 1. **GDI+**: GDI+是Windows操作系统中的一个图形处理库,它为...
GDI是.NET Framework提供的一种图形编程接口,允许程序员在Windows应用程序中进行图形绘制。 首先,验证码的基本原理是生成一串随机字符序列,通常包含字母、数字或特殊符号,然后将其与背景图像结合并进行扭曲、...
3. `Font` 和 `SolidBrush` 类:定义字体样式和颜色,用于绘制验证码字符。 4. `HttpHandler` 或 `HttpModule`:在ASP.NET中处理请求,生成验证码图片并将其响应给浏览器。 在标签中提到的AJAX(Asynchronous ...
6. **步骤四:绘制验证码文本** - 使用`Graphics`类的`DrawString`方法,配合`Font`和`SolidBrush`对象,将随机字符串绘制到图像上。为了提高安全性,可以改变字体样式、大小、倾斜角度和颜色。 7. **步骤五:添加...
它可能使用了GDI+库来绘制文本,添加各种视觉效果以增加难度。 2. **服务器端验证逻辑**:当用户输入验证码时,服务器端会检查输入值是否与之前存储的验证码一致。 3. **HTML/ASP.NET页面**:包含一个ASP.NET控件...
ASP.NET验证码技术是一种用于验证用户身份的安全机制,它在网页应用中广泛使用,尤其是在表单提交、注册、登录等场景,防止自动化的机器人程序(如垃圾邮件发送者或恶意脚本)进行非法操作。本文将深入探讨如何使用...