通过GDI+绘制 验证码
只为了记录下自己的学习历程,方便日后查看
现在开始言归正传,以下为其完整代码附上
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+绘制 验证码的更多相关文章
- C#验证码 使用GDI绘制验证码
首先展示一下效果图如下: C#中的GDI特别方便,很多方法我们只要简单的调用就可以实现很复杂的功能.具体实现过程如下: 首先创建一个windows窗体应用(测试使用,实际开发winform程序时在需要 ...
- Winform之GDI绘制验证码
主要功能:点击验证码可更换,输入验证码进行登陆 需要导入命名空间System.Drawing; 产生五位的随机字符串: 1 Random random = new Random(); //产生5个随机 ...
- GDI+在绘制验证码中的使用
GDI+最简单的理解就是用来绘图的.其中包括点.直线.矩形.字符串等等. 先简单来个例子,说明如何在winform窗体中绘制一条直线,并且这条直线不随着窗体的移动而消失. using System; ...
- 利用GDI+在Winfrom绘制验证码
string yzm: private void yangzhengma() { Bitmap bt = new Bitmap(70,22);//创建位图对象 Graphics gs = Graphi ...
- C#利用GDI+绘制旋转文字等效果
C#中利用GDI+绘制旋转文本的文字,网上有很多资料,基本都使用矩阵旋转的方式实现.但基本都只提及按点旋转,若要实现在矩形范围内旋转文本,资料较少.经过琢磨,可以将矩形内旋转转化为按点旋转,不过需要经 ...
- C# 使用GDI+绘制漂亮的MenuStrip和ContextMenuStrip皮肤
通过上面的效果截图可以看到,重绘后的MenuStrip和ContextMenuStrip可以添加自己的LOGO信息,实现了类似OFFICE2007的菜单显示效果. .NET对菜单控件的绘制提供了一个抽 ...
- MFC 用gdi绘制填充多边形区域
MFC 用gdi绘制填充多边形区域 这里的代码是实现一个三角形的绘制,并用刷子填充颜色 在OnPaint()函数里面 运用的是给定的三角形的三个点,很多个点可以绘制多边形 CBrush br(RGB( ...
- GDI绘制时钟效果,与系统时间保持同步,基于Winform
2018年工作之余,想起来捡起GDI方面的技术,特意在RichCodeBox项目中做了两个示例程序,其中一个就是时钟效果,纯C#开发.这个CSharpQuartz是今天上午抽出一些时间,编写的,算是偷 ...
- 『备注』GDI+ 绘制文本有锯齿,透明背景文本绘制
背景: GDI+ 绘制文本 时,如果 背景是透明的 —— 则会出现 锯齿. //其实,我不用这三个 属性 好多年了 //而且,这三个属性 在关键时刻还有可能 帮倒忙 //关键是:这三个属性,鸟用都没有 ...
随机推荐
- spring 上传 下載文件
1,spring配置文件添加文件上传配置 <!-- 上传文件 --> <bean id="multipartResolver" class="org.s ...
- 【Android自学日记】【转】Android Fragment 真正的完全解析(上)
自从Fragment出现,曾经有段时间,感觉大家谈什么都能跟Fragment谈上关系,做什么都要问下Fragment能实现不~~~哈哈,是不是有点过~~~ 本篇博客力求为大家说明Fragment如何产 ...
- Unity3D 原生Android结合UnityPlayerActivity开发遇到的问题
需求是原生Android 的Activity启动UnityPlayerActivity,按Back键后返回原来的Activity 1.在AndroidManifest.xml中的UnityPlayer ...
- mysql 基础
(1)插入多条数据 INSERT INTO users(name, age) VALUES('姚明', 25), ('比尔.盖茨', 50), ('火星人', 600); (2)将查询出来的字段插入其 ...
- bug 汇总
联通营业厅充话费无法在线支付,chrome Python 64位安装包 win7 64 windows 10 右键菜单 Android studio IE11 layout
- ACM/ICPC 之 有流量上下界的网络流-Dinic(可做模板)(POJ2396)
//有流量上下界的网络流 //Time:47Ms Memory:1788K #include<iostream> #include<cstring> #include<c ...
- Debian8.3安装flash插件,备用~~~
debian的浏览器iceweasel默认没有安装flash播放器,flash player这坨shit,容易使浏览器崩溃,但看在线视频又不得不用这货. 有两种安装方法: 一.安装压缩包 1.先去官网 ...
- [2013-08-01]window.open
经常上网的朋友可能会到过这样一些网站,一进入首页立刻会弹出一个窗口,或者按一个连接或按钮弹出,通常在这个窗口里会显示一些注意事项.版权信息.警告.欢迎光顾之类的话或者作者想要特别提示的信息.其实制作这 ...
- java中cookie存取值
cookie存值: Cookie userCookie=new Cookie("loginInfo",loginInfo); userCookie.setMaxAge(30*24* ...
- python 装饰器
#!/usr/bin/env python3 #-*-encoding:utf-8-*- def w3(*args, **kwargs): ') def w1(): def ww1(func): de ...