只为了记录下自己的学习历程,方便日后查看

现在开始言归正传,以下为其完整代码附上

 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; namespace _06GDI_绘制验证码
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void pictureBox1_Click(object sender, EventArgs e)
{
//用户生成随机码
Random r = new Random();
//用于遍历验证码的序列
string str="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
//存储验证码
string code = "";
for (int i = ; i < ; i++)
{
//随机从字符串序列中随机生成一个字符,并将其添加到验证码中
code += str[r.Next(,str.Length)]; }
//创建位图对象,Bitmap继承于Image类
Bitmap bitimage = new Bitmap(,);
Graphics gra = Graphics.FromImage(bitimage);
for (int i = ; i < ; i++)
{
//通过点,设置每个字体的宽度
Point point = new Point(i*,);
//字体数组,用于验证码中产生不同随机字体,
string[] fonts = { "幼圆", "宋体", "仿宋", "楷体", "Times New Roman" };
//颜色数组,用于验证码中产生不同颜色的字。
Color[] colors = {Color.Black,Color.Blue,Color.Brown,Color.Chocolate,Color.DarkSlateBlue};
//将生成的验证码字符通过GDI对象绘制出,调用DrawString()方法
gra.DrawString(code[i].ToString(),new Font(fonts[r.Next()],,FontStyle.Bold),new SolidBrush(colors[r.Next()]),point); }
//在验证码上添加部分线,使其不那么清晰 for (int i = ; i < ; i++)
{
Point p1=new Point(r.Next(bitimage.Width),r.Next(bitimage.Height));
Point p2=new Point(r.Next(bitimage.Width),r.Next(bitimage.Height));
Pen pen = new Pen(Brushes.Blue);
gra.DrawLine(pen,p1,p2);//绘制线条
}
//在验证码上添加部分点,使其不那么清晰
for (int i = ; i < ; i++)
{
Point p = new Point(r.Next(bitimage.Width),r.Next(bitimage.Height));
bitimage.SetPixel(p.X, p.Y, Color.Black);//绘制点 }
picCon.Image = bitimage;//将所绘制的验证码添加到picboxs上 }
}
}

GDI+ 绘制验证码

以下为运行结果图

通过GDI+绘制 验证码的更多相关文章

  1. C#验证码 使用GDI绘制验证码

    首先展示一下效果图如下: C#中的GDI特别方便,很多方法我们只要简单的调用就可以实现很复杂的功能.具体实现过程如下: 首先创建一个windows窗体应用(测试使用,实际开发winform程序时在需要 ...

  2. Winform之GDI绘制验证码

    主要功能:点击验证码可更换,输入验证码进行登陆 需要导入命名空间System.Drawing; 产生五位的随机字符串: 1 Random random = new Random(); //产生5个随机 ...

  3. GDI+在绘制验证码中的使用

    GDI+最简单的理解就是用来绘图的.其中包括点.直线.矩形.字符串等等. 先简单来个例子,说明如何在winform窗体中绘制一条直线,并且这条直线不随着窗体的移动而消失. using System; ...

  4. 利用GDI+在Winfrom绘制验证码

    string yzm: private void yangzhengma() { Bitmap bt = new Bitmap(70,22);//创建位图对象 Graphics gs = Graphi ...

  5. C#利用GDI+绘制旋转文字等效果

    C#中利用GDI+绘制旋转文本的文字,网上有很多资料,基本都使用矩阵旋转的方式实现.但基本都只提及按点旋转,若要实现在矩形范围内旋转文本,资料较少.经过琢磨,可以将矩形内旋转转化为按点旋转,不过需要经 ...

  6. C# 使用GDI+绘制漂亮的MenuStrip和ContextMenuStrip皮肤

    通过上面的效果截图可以看到,重绘后的MenuStrip和ContextMenuStrip可以添加自己的LOGO信息,实现了类似OFFICE2007的菜单显示效果. .NET对菜单控件的绘制提供了一个抽 ...

  7. MFC 用gdi绘制填充多边形区域

    MFC 用gdi绘制填充多边形区域 这里的代码是实现一个三角形的绘制,并用刷子填充颜色 在OnPaint()函数里面 运用的是给定的三角形的三个点,很多个点可以绘制多边形 CBrush br(RGB( ...

  8. GDI绘制时钟效果,与系统时间保持同步,基于Winform

    2018年工作之余,想起来捡起GDI方面的技术,特意在RichCodeBox项目中做了两个示例程序,其中一个就是时钟效果,纯C#开发.这个CSharpQuartz是今天上午抽出一些时间,编写的,算是偷 ...

  9. 『备注』GDI+ 绘制文本有锯齿,透明背景文本绘制

    背景: GDI+ 绘制文本 时,如果 背景是透明的 —— 则会出现 锯齿. //其实,我不用这三个 属性 好多年了 //而且,这三个属性 在关键时刻还有可能 帮倒忙 //关键是:这三个属性,鸟用都没有 ...

随机推荐

  1. js精简写倒计时函数

    <div class="fRight mR10" id="time"> </div> <script type="tex ...

  2. C# 调用webservice 几种办法(转载)

    原文地址: http://www.cnblogs.com/eagle1986/archive/2012/09/03/2669699.html //=========================== ...

  3. python 模块包裹

    arlenmbx@arlenmbx-ThinkPad-X130e:~$ su root 密码: root@arlenmbx-ThinkPad-X130e:/home/arlenmbx# python ...

  4. matlab绘图基础

    matlab绘制条形图并分组显示: a =[1 2 3] b =[4 5 6] >> d=[a;b] d = 1 2 3 4 5 6 >> bar(d,'group') 修改横 ...

  5. Python3.4下安装pip和MySQLdb

    想用pyhton3.4做数据分析,pip和MySQLdb是必要的,一个便于安装常用模块,一个用来操作数据库.当时安装这两个模块时,由于没有人指导,花了很多的时间才安装好. 安装pip时,按照网上的教程 ...

  6. spring framework核心框架体系结构

    很实用,稀里糊涂的我算是看清了. 很多人都在用spring开发java项目,但是配置maven依赖的时候并不能明确要配置哪些spring的jar,经常是胡乱添加一堆,编译或运行报错就继续配置jar依赖 ...

  7. MongoDB 学习笔记一: 配置

    下载MongoDB 下载地址:https://www.mongodb.com/download-center?jmp=nav#community 这里是在windows平台下安装MongoDB, 下载 ...

  8. C语言简单文法

    <源程序>→<外部声明>|<外部声明><函数体> <外部申明>→<头文件><函数声明>|其他声明 <函数体&g ...

  9. 用Ghost进行备份还原

    今天给大伙介绍一下怎么用Ghost给自己的系统进行备份和还原,在这里我用的是U盘启动盘(电脑店)里面的手动Ghost.   首先给大家介绍一下Ghost界面的一些相关选项的含义:(虽然难看但希望大伙们 ...

  10. 常用Javascript语法

    1.document.write(""); 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document->html->(head,body) 4. ...