GDI+ 绘图教程 验证码
使用的 C# winform
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 GDI_ { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { // 一根笔 绘制直线的对象 pen 颜色 Brush Brushes SolidBrush color 一张纸(图面) Graphics 两点 Point } private void button1_Click(object sender, EventArgs e) { //创建GDI图面对象 //Graphics g = new Graphics(); 没有定义构造函数 //创对象 // 1 在堆中开空间 2 在开辟的空间创对象 3 调用构造函数 Graphics g = this.CreateGraphics(); //创建画笔对象 画笔 //1 //Pen pen = new Pen(Brushes.Yellow);//Brush 点不出来 看复数 //2 直接给笔上色 Pen pen = new Pen(Color.Yellow);// //Pen pen = new Pen(new Brush(Color.Yellow));Brush 抽象类报错 //创建两个点 Point p1 = , ); Point p2 = , ); g.DrawLine(pen, p1, p2); } ; private void Form1_Paint(object sender, PaintEventArgs e) { i++; label1.Text = i.ToString(); //创建GDI对象 //Graphics g = new Graphics(); //创对象 // 1 在堆中开空间 2 在开辟的空间创对象 3 调用构造函数 Graphics g = this.CreateGraphics(); //创建画笔对象 画笔 Pen pen = new Pen(Brushes.Yellow);// 复数形式 返回对象 //创建两个点 Point p1 = , ); Point p2 = , ); g.DrawLine(pen, p1, p2); } private void button2_Click(object sender, EventArgs e) { Graphics g = this.CreateGraphics(); Pen pen = new Pen(Brushes.Yellow); Size si = , ); Rectangle rec = , ), si); // 矩形对象 g.DrawRectangle(pen, rec); } private void button3_Click(object sender, EventArgs e) { Graphics g = this.CreateGraphics(); Pen pen = new Pen(Brushes.Blue); Size si = , ); Rectangle rec = , ), si); g.DrawPie(pen, rec, , );//他要什么 我们就给什么 //Draw 画 在图上绘制 Graphics } private void button4_Click(object sender, EventArgs e) { Graphics g = this.CreateGraphics(); Font f = , FontStyle.Underline); g.DrawString(, )); } } }
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 GDI_验证码 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } //点击更换验证码 private void pictureBox1_Click(object sender, EventArgs e) { //1 产生随机数 Random r = new Random(); string str = null; ; i < ; i++) { , ); str += rNumber; } //MessageBox.Show(str); // 画一个图片 把文本放到图片里面去 //创建GDI对象 Bitmap bmp = , );//创建位图 //位图 操作系统中 默认的图片类型 其实就是位图(.bmp) Graphics g = Graphics.FromImage(bmp); //对象从图片来 就是在图片上绘制 // 画数字 ; i < ; i++) { Point p = , ); string[] fonts = { "宋体", "微软雅黑", "黑体", "隶书", "仿宋" }; Color[] colors = { Color.Yellow, Color.Blue, Color.Red, Color.Black, Color.Green }; g.DrawString(str[i].ToString(), , )], , FontStyle.Bold), , )]), p); } //画线 ; i < ; i++) {//线必须在验证码图片里面 Point p1 = , bmp.Width), r.Next(, bmp.Height)); Point p2 = , bmp.Width), r.Next(, bmp.Height)); g.DrawLine(new Pen(Brushes.Green), p1, p2); } //画点 ; i < ; i++) { //创建点 Point p = , bmp.Width), r.Next(, bmp.Height)); bmp.SetPixel(p.X, p.Y, Color.Black);//再在图上画点 } //将图片镶嵌到picturebox中 pictureBox1.Image = bmp; } } }
GDI+ 绘图教程 验证码的更多相关文章
- VB6 GDI+ 入门教程[5] 基础绘图小结
http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[5] 基础绘图小结 2009 年 6 月 18 日 4条 ...
- VB6 GDI+ 入门教程[1] GDI+介绍
http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[1] GDI+介绍 2009 年 6 月 18 日 17 ...
- VB6 GDI+ 入门教程[2] GDI+初始化
http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[2] GDI+初始化 2009 年 6 月 18 日 7 ...
- VB6 GDI+ 入门教程[4] 文字绘制
http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[4] 文字绘制 2009 年 6 月 18 日 7条评论 ...
- VB6 GDI+ 入门教程[6] 图片
http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[6] 图片 2009 年 6 月 19 日 15条评论 ...
- 如何用GDI+画个验证码
如何使用GDI+来制作一个随机的验证码 绘制验证码之前先要引用 using System.Drawing; using System.Drawing.Drawing2D; 首先,先写一个方法来取得验证 ...
- MFC GDI绘图基础
一.关于GDI的基本概念 什么是GDI? Windows绘图的实质就是利用Windows提供的图形设备接口GDI(Graphics Device Interface)将图形绘制在显示器上. 在Wind ...
- VB6 GDI+ 入门教程[3] 笔、刷子、矩形、椭圆绘制
http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[3] 笔.刷子.矩形.椭圆绘制 2009 年 6 月 1 ...
- VB6 GDI+ 入门教程[7] Graphics 其他内容
http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[7] Graphics 其他内容 2009 年 9 月 ...
随机推荐
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_1-4.在线教育后台数据库设计
笔记 4.在线教育后台数据库设计 简介:讲解后端数据库设计 ,字段冗余的好处,及常见注意事项 1.数据库设计: er图: 实体对象:矩形 ...
- IPv4 ping命令
IPv4 ping命令 一.Linux操作系统 给一台 Linux 主机分配了一个 IPv4 的 IP地址,如何使用 ping命令 确定该 IP地址 能否 ping 通呢? 1.查看主机的 IPv4 ...
- matlab中如何给一个矩阵中的某几个特定位置赋值
用sub2ind >> a=zeros(5); i = [2;3;4]; j = [1;4;2]; >> a(sub2ind(size(a), i, j))=1 a = 0 0 ...
- SSM整合junit单元测试之org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
想用SSM做一点小测试,项目整合完毕,直接使用junit测试mybatis,出现如下错误(SuperTest类中进行了spring运行环境加载): 解决思路: 检查mapper接口与mapper.xm ...
- 基于scrapy框架的爬虫
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. scrapy 框架 高性能的网络请求 高性能的数据解析 高性能的 ...
- centos7.5 解决缺少libstdc++.so.6库的原因及解决办法
centos7. 解决缺少libstdc++.so.6库的原因及解决办法 执行node -v报错如下: [root@bogon ~]# node -v node: error : cannot ope ...
- playbook部署coredns
playbook部署coredns 说明test1是主控节点,目的是给test4 node节点安装coredns, 1.coredns-1.2.2.tar.gz安装包放到主控节点/server/sof ...
- babylon 初试
出于对web端3D技术的对比,以及WebGL的发展现状和WebGPU的发展前景,我觉得有必要涉猎一下babylon.js了. 可以参考一下下列文章: 1⃣️下一代web端图形接口现状与前景:https ...
- SpringBoot简历模板
项目二:智慧学习-乐勤在线学习网(SpringBoot)◎ 开发模式:团队(8人) ◎ 开发周期:4个月◎ 开发环境:JDK1.8.Zookeeper ◎ ...
- Windows主机SAM文件格式破解解密
文件格式如是下图这种格式: 那么就可以通过通过kali终端samdump2 + system + sam 生成出来通过hashcat -m 1000去跑,或者通过md5查询