如何用GDI+画个验证码
如何使用GDI+来制作一个随机的验证码
绘制验证码之前先要引用
using System.Drawing;
using System.Drawing.Drawing2D;
首先,先写一个方法来取得验证码里的字符串
string CreateCode(int len)//len是自定义验证码的长度
{
string str = "012ABCDEF34GHIJK56LMN789OPQabcRSTdefUVWghiXYZjklmnopqrstuvwxyz";//验证码所要用到的所有字符,这里我用了字母和数字的组合
string code = "";
Random r = new Random(); for (int i = ; i < len; i++)
{
int j = r.Next(, str.Length - );//取得一个从0到字符串长度的随机数
code += str[j];//拼接到验证码变量里
} return code;
}
然后用GDI+绘图,绘制在一个pictureBox里
void CreateImage()
{
Bitmap bt = new Bitmap(, );
Graphics g = Graphics.FromImage(bt); Random r=new Random();
string s = CreateCode();
Pen p = new Pen(Color.Silver); SolidBrush so = new SolidBrush(Color.FromArgb(r.Next(, ), r.Next(, ), r.Next(, )));//随机颜色的单色画刷
Font f = new Font("Arial", , FontStyle.Italic); //循环随机画200个像素点(干扰点)
for (int i = ; i < ; i++)
{
int x = r.Next(, bt.Width);//随机产生像素点X坐标
int y = r.Next(, bt.Height);//随机产生像素点Y坐标
//随机产生红、绿、蓝的颜色值
int red = r.Next(, );
int green = r.Next(, );
int blue = r.Next(, );
bt.SetPixel(x, y, Color.FromArgb(red, green, blue));
} g.DrawString(s, f, so, , );
g.DrawRectangle(p, new Rectangle(, , bt.Width - , bt.Height - ));
this.pictureBox1.Image = bt;
g.Dispose(); }
最后调用CreateImage()方法就能将一个随机的验证码图片显示在pictureBox中了
如何用GDI+画个验证码的更多相关文章
- 【C++自绘控件】如何用GDI+来显示图片
在我们制作一个应用软件的时候往往需要在窗口或控件中添加背景图.而图片不仅有BMP格式的,还有JPEG.PNG.TIFF.GIF等其它的格式.那么如何用jpg格式的图片来当背景呢? 这里用到了GDI+, ...
- 如何用css画出三角形
看到有面试题里会有问到如何用css画出三角形 众所周知好多图形都可以拆分成三角形,所以说会了画三角形就可以画出很多有意思的形状 画出三角形的原理是调整border(边框)的四个方向的宽度,线条样式以及 ...
- 如何用Photoshop画一个发光金币(unity游戏素材教程)
做好的发光金币预览图: 以下为如何用Photoshop画一个发光金币教程: [1]如上图1-2,新建,名称改为Coin,宽度20像素,高度20像素,分辨率72,背景白色: [2]使用Alt+Shift ...
- 如何用CorelDRAW画箭头?
CorelDRAW,简称为cdr,是一款专业的矢量绘图软件,在设计界也是常用的专业设计之一,在日常的设计工作中,我们常常需要绘制一些特殊的图形,比如箭头.很多对cdr不是特别熟练的小伙伴不知道如何用c ...
- 用GDI+画验证码
1.新建一个窗体应用程序,在上面拖一个pictureBox对象,为其添加单击事件 2.创建GDI对象.产生随机数画入图片中.画线条.最后将图片到pictureBox中,代码如下: private vo ...
- GDI画验证码
Random r = new Random(); string str = ""; for (int i = 0; i < 5; i++) { int a= r.Next(0 ...
- 笔记11:GDI 制作数字验证码
大二学长让我学下GDI绘制验证码,然后自己就试了试了.找了点视频看了下. 现在会画直线,矩形,字符串,制作验证码 一.绘制一条直线 private void button1_Click(object ...
- GDI+在绘制验证码中的使用
GDI+最简单的理解就是用来绘图的.其中包括点.直线.矩形.字符串等等. 先简单来个例子,说明如何在winform窗体中绘制一条直线,并且这条直线不随着窗体的移动而消失. using System; ...
- GDI+ 绘图教程 验证码
使用的 C# winform using System; using System.Collections.Generic; using System.ComponentModel; using Sy ...
随机推荐
- ruby-程序员最好的朋友
ruby一门开源的动态编程语言,注重简洁和效率.Ruby 的句法优雅,读起来自然,写起来舒适. 介绍 这是个不会超过20分钟的 Ruby 简介.阅读前请您先将 Ruby 安装好.(如果您还没有安装Ru ...
- centos7上安装python3
一.安装环境及版本 CentOS 6.5 Python 3.6.1 二.安装依赖包 1.安装静态库 # yum install -y openssl-static 注:如果不安装该静态库,会导致pyt ...
- restful知识点之三restframework认证-->权限-->频率
认证.权限.频率是层层递进的关系 权限业务时认证+权限 频率业务时:认证+权限+频率 局部认证方式 from django.conf.urls import url,include from djan ...
- 记录一次json转换的经历
需求:数据库里面的一个字段,存的是json数据,类似{‘name’:“name1”,'items':“[{code:0,name:'name2'}]”},{‘name’:“name3”,'items' ...
- java正则表达式校验移动电话、固话、邮编的校验
package com.tmall.epp.web.module.util; import java.util.regex.Pattern; /** * 移动电话.固话.邮编的校验 * @since ...
- 安装SCOM Reporting Server
在SQL群集计算机上可以安装SCOM Reporting Server. 1.运行SQL Server安装程序,选择 全新安装SQL Server,不能向已有的群集实例中添加Reporting Ser ...
- C++ Primer(6) 模板和泛型编程(上)
问题聚焦: 泛型编程是独立于变量类型的方式编写代码: 模板是泛型编程的基础. 本篇主要介绍模板的基础知识,包括:模板的定义和模板的实例化. 1 模版定义 必要性: Demo int compare(c ...
- 添加PHP扩展模块
php安装好后,可能在初次安装时,会有些模块会有遗漏,但是我们又不想重新编译php,因为耗时是比较长的.我们可不可以在不重新编译安装php的情况下,来为php单独添加某一个模块呢?查找资料,发现还是有 ...
- centos7 docker 使用pipework 做虚拟机
网卡配置文件 及 bridge的静态配置 centos7 Bridge配置 [root@mon-1 ~]# cd /etc/sysconfig/network-scripts/ [root@mon- ...
- August 09th 2017 Week 32nd Wednesday
Find hope from despair, life will become brilliant. 从绝望中寻找希望,人生终将辉煌. Have you ever seen the movie Ba ...