C#创建简单的验证码

首先,创建一个CLASS类,然后需要add Reference的方式添加 System.Drawing(画画的类)

方法代码如下:

 1        /**//**//**//// <summary>
 2        /// 定义显示的随机字符
 3        /// </summary>
 4        /// <param name="strList"></param>
 5        /// <returns></returns>

 6        private string imageStr(char[] strList)
 7        {
 8
 9            if (strList == null)
10                strList = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();
11            
12            int codeLengh = 4;
13            string radomCode = "";
14            Random r = new Random();
15            for (int i = 0; i < codeLengh;i++)
16            {
17                radomCode += strList[r.Next(strList.Length)];
18            }

19            return radomCode;
20        }

21
22        /**//**//**//// <summary>
23        /// 创建随机验证字符的IMAGE,并保存,同时返回随机字符串
24        /// </summary>
25        /// <param name="iWidth">图片宽度 0时,默认为55</param>
26        /// <param name="iHeight">图片高度 0时,默认为22</param>
27        /// <param name="font">字符字体 null时,默认为 "Arial", 12, FontStyle.Bold</param>
28        /// <param name="sb">字符颜色 null时,默认为红</param>
29        /// <param name="ImagePath">需要保存的文件绝对路径</param>
30        /// <param name="strList">随即字符库 null时,默认为0-9A-Z</param>
31        /// <returns>返回随机字符串</returns>

32        public string createImgWithStr(int iWidth,int iHeight,Font font,SolidBrush sb ,string ImagePath,char[] strList)
33        {
34            if (font == null)
35                font = new Font("Arial"12, FontStyle.Bold);
36            if (sb == null)
37                sb = new SolidBrush(Color.Red);
38            if (iWidth == 0)
39                iWidth = 55;
40            if (iHeight == 0)
41                iHeight = 22;
42            //得到随机字符串
43            string imageString = imageStr(strList);
44            //定义横向竖向都画4跳线
45            int lineCount = 4;
46            这2支笔用来画线条的
47            Pen pen1 = new Pen(Color.Gold, 1);
48            Pen pen2 = new Pen(Color.Black, 2);
49            //定义图片
50            Bitmap image = new Bitmap(iWidth, iHeight);
51            //跟J2ME一样的画笔
52            Graphics g = Graphics.FromImage(image);
53            //先画背景色 当然你可以自定义下
54            g.Clear(ColorTranslator.FromHtml("#F0F0F0"));
55            //确定写字的落点
56            Rectangle rect = new Rectangle(52, iWidth, iHeight);
57
58            Random r = new Random();
59
60            //默认随机画横向竖向4条线
61            for(int i =0;i<lineCount;i++)
62            {
63                Point p1 = new Point(0, r.Next(iHeight));
64                Point p2 = new Point(iWidth, r.Next(iHeight));
65                Point p3 = new Point(r.Next(iWidth), 0);
66                Point p4 = new Point(r.Next(iWidth), iHeight);
67                g.DrawLine(pen1, p1, p2);
68                g.DrawLine(pen2, p3, p4);
69            }

70            //写字
71            g.DrawString(imageString, font, sb, rect);
72            //删除源文件
73            if (File.Exists(ImagePath))
74                File.Delete(ImagePath);
75            //保存文件,我定义为jpeg格式
76            image.Save(ImagePath, System.Drawing.Imaging.ImageFormat.Jpeg);
77            //释放资源
78            g.Dispose();
79            image.Dispose();
80
81            return imageString;
82        }

另外,我在实际运用过程中总是发现重新生成了图片,但是显示却还是以前那张,最后在网上找到了答案:

原本的<asp:Image ID="Image1" runat="server" ImageUrl="~/a.jpg" />

改成<asp:Image ID="Image1" runat="server" ImageUrl="~/a.jpg?temp=<%=  DateTime.Now.Ticks%>" />

就能够自动更新了。。

转载于:https://www.cnblogs.com/jimmypony/archive/2008/03/19/1113397.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/463949.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

昨天的事情想说一下

发那篇文章的目的昨天发文章之后&#xff0c;我的一个好朋友微信找我&#xff0c;跟我说了很多关于文章的事情&#xff0c;所以&#xff0c;我自己也思考了许多。关于泄愤这个事情&#xff0c;我还是挺想说的。可能很多人看到了一个不好的东西&#xff0c;然后网上发发这个&…

Multidimensional Queries(二进制枚举+线段树+Educational Codeforces Round 56 (Rated for Div. 2))...

题目链接&#xff1a; https://codeforces.com/contest/1093/problem/G 题目&#xff1a; 题意&#xff1a; 在k维空间中有n个点&#xff0c;每次给你两种操作&#xff0c;一种是将某一个点的坐标改为另一个坐标&#xff0c;一种操作是查询[l,r]中曼哈顿距离最大的两个点的最大…

poj 3342

概率dp&#xff0c;不解释。 View Code #include<iostream>#include<map>#include<cstdio>#include<vector>using namespace std;const int maxn201;int dp[210][2];vector<int>edge[maxn];void dfs(int u,int p){int i,j; dp[u][1]1;dp[u][…

最全是一次I2C总结

博主将 I2C spec 文章总结为一篇&#xff0c;目录如下I2C Introduction I2C Architecture I2C Transfer I2C Synchronization And Arbitration I2C Hs-mode1、I2C Introduction1、I2C 历史I2C&#xff1a;Inter-Integrated Circuit&#xff0c;集成电路总线。I2C 是 Philips 公…

Interesting Finds: 2008.03.24

.NET: C#正则表达式整理备忘 谈谈volatile变量 Other: PTOM: The Open Closed Principle Calculating pi with C# - Calculate PI using C# Regular Expression Workbench - a free and opensource option for RegexBuddy 转载于:https://www.cnblogs.com/gOODiDEA/archive/2…

如何利用openSsl来计算一个文件的md5值?

openssl环境的配置&#xff0c; 我就不再说了。在本文中&#xff0c; 我们来讨论一个文件的md5值&#xff0c; 废话少说&#xff0c; 直接给大家代码&#xff0c; 上点干货&#xff1a; [cpp] view plaincopy #include <iostream> #include <openssl/md5.h> // 如…

qs文档翻译

安装&#xff1a; npm install qs --save-dev 基本用法&#xff1a; 1 let qs require(qs);2 let assert require(assert);3 4 5 //qs.parse(ac)将字符串等式转换为对象6 let obj qs.parse(ac);7 console.log(obj)//{a:c}8 9 //qs.stringify(obj)将对象转化为字符串等式 10 …

Lync Server 2010标准版系列PART6:启用Lync

在我们花费了众多的精力和时间之后&#xff0c;我们终于完成了Lync Server标准版的搭建&#xff0c;接下来当然是为我们AD中的用户启用Lync&#xff0c;来看下我们的部署成果。首先我们需要在AD中创建两个帐户&#xff0c;这样便于我们后期的测试&#xff0c;在DC上打开AD用户和…

8位MCU跑RTOS有没有意义?

相信大多数人在学习单片机的时候&#xff0c;都是从最基本的8位MCU开始的。一般来说&#xff0c;8位单片机最常见的是三个系列是&#xff1a;51系列、AVR系列、PIC系列。而前段时间&#xff0c;群里讨论了一个问题&#xff1a;在51单片机上跑RTOS有没有意义&#xff1f;关于这个…

ViewState机制由浅入深1

1 ViewState机制是什么&#xff1f; ViewState机制是asp.net中对同一个Page的多次请求&#xff08;PostBack&#xff09;之间维持Page及控件状态的一种机制。在WebForm中每次请求完&#xff0c;Page对象都会被释放&#xff0c;对同一个Page的多次请求之间的状态信息&am…

关于bc中小数点length,scale,(())以及进制转换

这是我在codewar上遇到的一个题&#xff0c;我用我自己的方法做出了解答&#xff0c;如下&#xff1a; 1 #!/bin/bash2 3 distanceecho "$1*10000"|bc|cut -d"." -f14 a05 n16 7 if [ $distance -le 0 ];then8 echo None9 else 10 while [ $n -lt $di…

利用openssl来计算sha1, sha224, sha256, sha384, sha512

转载&#xff1a;http://blog.csdn.net/stpeace/article/details/42371079 利用openssl来计算sha1, sha224, sha256, sha384, sha512&#xff0c;前提是已经配置了openssl的环境&#xff1a; 代码如下&#xff1a; [cpp] view plaincopy #include <iostream> #include…

WCF简单教程(6) 单向与双向通讯

第六篇&#xff1a;单向与双向通讯 项目开发中我们时常会遇到需要异步调用的问题&#xff0c;有时忽略服务端的返回值&#xff0c;有时希望服务端在需要的时候回调&#xff0c;今天就来看看在WCF中如何实现。 先看不需要服务端返回值的单向调用&#xff0c;老规矩&#xff0c;直…

5V串口接3.3V单片机串口怎么搞?

写在前面&#xff1a;两个单片机由于电平不同&#xff0c;串口通信可能会失败&#xff0c;这时候需要通过电平转换电路来解决&#xff0c;本文给出了两种方法&#xff0c;一种是通过三极管搭建&#xff0c;另一种是MOS管搭建&#xff0c;在硬件工程师的笔试中也经常会出现这样的…

Django之缓存、信号和图片验证码

一、 缓存 1、 介绍 缓存通俗来说&#xff1a;就是把数据先保存在某个地方&#xff0c;下次再读取的时候不用再去原位置读取&#xff0c;让访问速度更快。 缓存机制图解 2、Django中提供了6种缓存方式 1. 开发调试   2. 内存   3. 文件   4. 数据库   5. Memcache缓存&…

利用openssl来计算sha256哈希值

先配置openssl, 我就不再赘述了&#xff0c; 直接给出代码&#xff1a; [cpp] view plaincopy #include <iostream> #include <openssl/sha.h> // 如果你直接拷贝我的程序运行&#xff0c; 那注定找不到sha.h #pragma comment(lib, "libeay32.lib") …

CuteEditor6.0使用配置心得体会(转)

CuteEditor是一款功能非常强大&#xff0c;支持图片上传、文件下载和word类似的文字编辑器。并且Vs2003和Vs2005都可以适用。对于新闻发布系统和博客之类的系统&#xff0c;是非常的方便的。对一个刚接触这款编辑器的朋友来说或许会遇到和我一样的许多问题&#xff0c;现在我就…

这焊接技术在班里排名第一没问题吧?

晚上和朋友讨论PCB LAYOUT&#xff0c;然后自己也动手起来了&#xff0c;刚好看到宇哥的一篇焊接的文章&#xff0c;这焊接技术这么厉害的人&#xff0c;layout那不得是吊炸天啊。作者&#xff1a;晓宇&#xff0c;排版&#xff1a;晓宇微信公众号&#xff1a;芯片之家&#xf…

html字符串生成器源代码

#-*-coding:utf-8-*-#-*-coding:big5-*-#-*-coding:cp936-*-import Tkinterimport tkFileDialogimport osimport tkMessageBoximport shutilurlnew""#文件打开def manipuOpen(): url tkFileDialog.askopenfilename(title 打开html文件, #创建打开文件对话框…

一个莫名的人,竞标,教训,韩国女人

今天处理了"竞标公司"的后遗症。 教训&#xff1a;以后千万不要轻易把自己的手机号码留给其他的公司&#xff0c;否则他会不停的骚扰你 认识一个奇怪的人&#xff0c;去了解了他&#xff0c;不知道是男是女&#xff0c;和那个穿韩国衣服的女人一样 以前借了另外一个人…