using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms; namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
//一张纸 一根笔 一个人 两个点 }
//画直线
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics gp = this.CreateGraphics();
Pen p = new Pen(Color.Blue);
Point p1 = new Point(, );
Point p2 = new Point(, );
gp.DrawLine(p, p1, p2);
} //画多线直线
private void button1_Click(object sender, EventArgs e)
{
//创建一个GDI+ 对象
Graphics g = this.CreateGraphics();
//创建画笔对象
Pen pen = new Pen(Color.Blue);
//创建两个点
Point p1 = new Point(, );
Point p2 = new Point(, );
//在画板中用pen在p1和p2两个点之间画一条直线
g.DrawLine(pen, p1, p2);
//pos为point数组,在画板中画多条直线
Point p3 = new Point(, );
Point p4 = new Point(, );
Point[] pos = { p1, p2, p3, p4 };
g.DrawLines(pen, pos);
} //画矩形
private void button2_Click(object sender, EventArgs e)
{
//创建GDI+对象
Graphics gp = this.CreateGraphics();
//创建矩形对象 左上角度座标 宽 高
Rectangle rec = new Rectangle(new Point(, ), new Size(, ));
gp.DrawRectangle(new Pen(Color.Blue), rec);
} //填充矩形
private void button3_Click(object sender, EventArgs e)
{
//创建GDI+对象
Graphics gp = this.CreateGraphics();
//给定要填充的矩形对象
Rectangle rec = new Rectangle(new Point(, ), new Size(, ));
//填充颜色 获取系统颜色 给定要填充的矩形
gp.FillRectangle(Brushes.DarkGreen, rec);
} //画扇形,并填充
private void button4_Click(object sender, EventArgs e)
{
//创建GDI+对象
Graphics gp = this.CreateGraphics();
//给定要填充的矩形对象
Rectangle rec = new Rectangle(new Point(, ), new Size(, ));
//绘制扇形 pen对象 矩形 右角 左角度
gp.DrawPie(new Pen(Color.Red), rec, , );
//填充扇形 获取系统对象 矩形 右角 左角度
gp.FillPie(Brushes.DarkGreen, rec, , );
} //画文字
private void button5_Click(object sender, EventArgs e)
{
//创建GDI+对象
Graphics g = this.CreateGraphics();
//绘制文本 文本 字体样式: 字体 字号 样式粗?斜?... 获取系统颜色 绘制到的座标点
g.DrawString("中国您好!", new Font("华文行楷", , FontStyle.Italic), Brushes.Red, new Point(, ));
} //验证码
private void pictureBox1_Click(object sender, EventArgs e)
{
//生成1到9之间的4个随机数
Random r = new Random();
string str = "";
for (int i = ; i < ; i++)
{
int rNumber = r.Next(, );
//累加到空字符串中
str += rNumber;
} //创建GDI+对象
//创建图片对象, 指定 宽 和 高
Bitmap bm = new Bitmap(,);;
//从指定的Image对象创建新的Grapics画板
Graphics g = Graphics.FromImage(bm); //数组存放字体
string[] fonts = {"黑体","微软雅黑","隶书","楷体"};
//数组存放颜色
Color[] colors = {Color.Red,Color.Yellow,Color.Pink,Color.Purple};
//画字
for (int i = ; i < ; i++)
{
//指定座标
Point p = new Point(i*,);
//画文字
g.DrawString(str[i].ToString(), new Font(fonts[i], , FontStyle.Italic), new SolidBrush(colors[i]),p); }
//画线
for (int j = ; j < ; j++)
{
Point p1 = new Point(r.Next(,bm.Width),r.Next(bm.Height));
Point p2 = new Point(r.Next(,bm.Width),r.Next(,bm.Height));
g.DrawLine(new Pen(Color.Green), p1, p2);
}
//画像素点
for (int i = ; i < ; i++)
{
Point p1 = new Point(r.Next(,bm.Width),r.Next(bm.Height));
Point p2 = new Point(r.Next(,bm.Width),r.Next(,bm.Height));
bm.SetPixel(p1.X, p1.Y, Color.Black);
} //将bm这个图片直接镶嵌到pictureBox上
pictureBox1.Image = bm;
}
}
}

c#winform图片绘制与图片验证码的更多相关文章

  1. android绘制圆形图片的两种方式

    看下效果先 下面有完整的示例代码 使用BitmapShader(着色器) 我们在绘制view 的时候 就是小学上美术课 用水彩笔在本子上画画 使用着色器绘制圆形图片最简单的理解方式 就是把bitmap ...

  2. GDI+ 如何将图片绘制成圆形的图片

    大概意思就是不生成新的图片,而是将图片转换为圆形图片. 实现代码如下: private Image CutEllipse(Image img, Rectangle rec, Size size) { ...

  3. 使用MFC CImage类绘制PNG图片时遇到的问题

    为了测试CImage绘制PNG图片的效果,我们用截图软件截得一张360的界面,然后使用PhotoShop等工具在图片的周边加上了透明的区域,然后保存成PNG图片文件.CImage首先从文件中加载,即 ...

  4. ImageDrawer.js图片绘制插件

    ImageDrawer.js图片绘制插件有以下一些可用的配置参数. Duration:整个动画或每个步骤的绘制时间(以秒为单位) Background:在绘图时将颜色放在图片上 Callback:绘画 ...

  5. canvas 2.0 图片绘制

    绘制图片drawImage 2013.02.21 by 十年灯·一条评论 本文属于<html5 Canvas画图系列教程> 这里的绘制图片是指把一张现成的图片,绘制到Canvas上面. 有 ...

  6. Win10系列:VC++绘制位图图片

    在使用Direct2D绘制图片的过程中,通过IWICImagingFactory工厂接口来得到绘制图片所需要的资源.本小节将介绍如何通过IWICImagingFactory工厂接口得到这些资源,并使用 ...

  7. Android Developers:绘制9-patch图片

    绘制9-patch图片工具让你使用可见即可得(WYSIWYG)编辑器轻松创建Nine Patch图像. 关于介绍Nine-path图片和它是如何工作的,请在2D Graphics的文档中查阅关于Nin ...

  8. GDI+ 怎样将图片绘制成圆形的图片

    大概意思就是不生成新的图片,而是将图片转换为圆形图片. 实现代码例如以下: private Image CutEllipse(Image img, Rectangle rec, Size size) ...

  9. WPF GDI+字符串绘制成图片(二)

    原文:WPF GDI+字符串绘制成图片(二) 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/BYH371256/article/details/83 ...

随机推荐

  1. LeetCode OJ:Rotate Image(旋转图片)

    You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). ...

  2. QListWidgetItem的图片大小问题

    图片的大小是由listWidget的setIconSize设定的,而不是ListWidgetItem的SetIcon设定的

  3. WEB-INFO里面的jsp文件不能通过href 访问,而只能通过 servlet访问

    href="<%=basePath %>index.jsp"> 这种确实 可以在jsp页面跳转至另一个页面,只不过要放在WEB-INFO外面,也就是项目根目录下面 ...

  4. New Concept English three (34)

    typing speed:27 typing Errors:45 Antique shops exert a peculiar fascination on a great many people. ...

  5. OSPF 配置

    封装在IP层:协议号 89 hello时间是dead时间的1/4 224.0.0.5 .在点到点网络, 比如T1线路,是连接单独的一对路由器的网络, 点到点网络上的有效邻居总是可以形成邻接关系的,在这 ...

  6. NGINX 配置文件配置url重写

    1.项目在根目录: location / {            index  index.html index.htm index.php l.php;            autoindex  ...

  7. C语言内存对齐对则

    这篇文章讲的非常好  :  http://blog.csdn.net/hairetz/article/details/4084088 用空间换时间, 规则 : 每个数据成员存储的起始位置都要是它的整数 ...

  8. 中 varStatus的属性简介

    varStatus是<c:forEach>jstl循环标签的一个属性,varStatus属性.就拿varStatus="status"来说,事实上定义了一个status ...

  9. LG5055 【模板】可持久化文艺平衡树

    题意 您需要写一种数据结构,来维护一个序列,其中需要提供以下操作(对于各个以往的历史版本): 在第 pp 个数后插入数 xx . 删除第 pp 个数. 翻转区间 [l,r][l,r],例如原序列是 { ...

  10. LA2797 Monster Trap

    题意 PDF 分析 可以考虑建图,跑迷宫. 然后以线段端点,原点,和无穷大点建图,有边的条件是两点连线和墙没有交点. 但是对两个线段的交点处理就会有问题,所以把线段延长.另外还需要判断延长后在墙上,舍 ...