命名空间

using System.Draw;

using System.Draw.Drawing2D;

在form等控件的 事件中 添加 paint事件

///////画各种形状(空心)///////

e.Graphics.Clear(Color.AliceBlue);//清楚整个绘画面并以制定的颜色(这里是爱丽丝蓝--Color.AliceBlue)填充

e.Graphics.DrawArc();//画弧线

e.Graphics.DrawCurve();//不闭合曲线

e.Graphics.DrawClosedCurve();//闭合的曲线

e.Graphics.DrawEllipse(pen, 80, 80, 150, 150);//画一个椭圆--如果宽和高相等则是一个正圆

Image img = Image.FromFile("clumsy-smurf-icon.png");//通过图片名称获得图片
e.Graphics.DrawImage(img,20,20);//画图片

e.Graphics.DrawRectangle();//画矩形 

//画文字

string s = "红鲤鱼与绿鲤鱼与驴";
Font font = new System.Drawing.Font("隶书",18);
SolidBrush brush = new SolidBrush(Color.Cyan);
e.Graphics.DrawString(s, font, brush,200,50);

//画渐变色文字

string s = "红鲤鱼与绿鲤鱼与驴";
Font font = new System.Drawing.Font("隶书",18);
SolidBrush brush1 = new SolidBrush(Color.Cyan);//常规颜色
Point point1 = new Point(0,0);//起始点1与点2之间距离越近变换的越频繁
Point point2 = new Point(20,40);
LinearGradientBrush brush2 = new LinearGradientBrush(point1, point2, Color.DarkCyan, Color.DeepPink);//渐变色
e.Graphics.DrawString(s, font, brush2,200,50);

实例:验证码

         private void pictureBox1_Paint(object sender, PaintEventArgs e)//装验证码的picturebox
{
_IdentifyingCode = "";
string str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQISTUVWXYZ0123456789";
Random rand = new Random();
for (int i = ; i < ; i++)//截取四位验证码
{
int start = rand.Next(str.Length);
string s = str.Substring(start, );
_IdentifyingCode += s;
}
//渐变色
Point startpoint = new Point(, );
Point endpoint = new Point(, );
LinearGradientBrush brush = new LinearGradientBrush(startpoint, endpoint, Color.LightGreen, Color.Yellow);
//SolidBrush brush = new System.Drawing.SolidBrush(Color.Chocolate);//实线
Font font = new System.Drawing.Font("Buxton Sketch",);
e.Graphics.DrawString(_IdentifyingCode, font, brush, , );
}

////////画各种形状(实心)///////

同画空心图形把代码中的Draw改为Fill,如:e.Graphics.FillPie();//画一个实心扇形

.Net验证码实现基础--Draw的更多相关文章

  1. C# 验证码识别基础方法及源码

    先说说写这个的背景 最近有朋友在搞一个东西,已经做的挺不错了,最后想再完美一点,于是乎就提议把这种验证码给K.O.了,于是乎就K.O.了这个验证码.达到单个图片识别时间小于200ms,500个样本人工 ...

  2. 实现Web验证码图片-原理

    实现验证码的基础 GDI+ graphics device interface plus的缩写,即图形设备接口.GDI+为开发者提供了一组实现与各种设备(具有图形化能力但不涉及图形细节的设备)进行交互 ...

  3. BinaryWrite方法输出验证码

    在创建网站中验证码是不可或缺的.可以利用BinaryWrite输出二进制图像的方法输出验证码. 在开发图形验证码时,首先生成验证码,然后绘制成图像,最后通过该方法输出到页面中.所以熟练地掌握该方法可以 ...

  4. Typecho中文验证码Captcha插件

    前言实在是受不了每天都要删除掉上百条的垃圾评论,干脆自己做了个验证码插件,顺带做的完善了些,分享给大家. 本插件是在评论验证码插件基础上完善而来.所不同的是,采用了最新的securimage 3.0. ...

  5. Python实现网站注册验证码生成类

    # -*- coding:utf-8 -*- ''' Created on 2017年4月7日 @author: Water ''' import os import random import st ...

  6. 图片验证码的JAVA工具类

    我们平时开发时经常会遇到需要图片验证码,基础的验证码包括了数字.字母.甚至可能有汉字.下面我给出一个简单的工具类. package com..ankang.tony.util; import java ...

  7. captcha.js一个生成验证码的插件,使用js和canvas生成

    一.captcha`captcha.js`是一个生成验证码的插件,使用js和canvas生成的,确保后端服务被暴力攻击,简单判断人机以及系统的安全性,体积小,功能多,支持配置. 验证码插件内容,包含1 ...

  8. canvas实现验证码功能

    我们在做一些后台系统登录功能的时候,一般都会用到验证码,最多的就是后台生成的验证码图片返回给前端的.也可以不调用后端接口,前端使用canvas直接生成验证码. 由于功能过于简单,不需要多少代码和文字说 ...

  9. 详细说说如何生成验证码—ASP.NET细枝末节(4)

    前言 今天小编详细的说一下,ASP.NET网站开发过程中生成验证码的全部问题. 本文的目标,是让读者了解,生成验证码涉及的全部基础知识问题. 当然这里说的是比较简单的验证码. 真正符合要求的验证码,涉 ...

随机推荐

  1. paper 10:支持向量机系列七:Kernel II —— 核方法的一些理论补充,关于 Reproducing Kernel Hilbert Space 和 Representer Theorem 的简介。

    在之前我们介绍了如何用 Kernel 方法来将线性 SVM 进行推广以使其能够处理非线性的情况,那里用到的方法就是通过一个非线性映射 ϕ(⋅) 将原始数据进行映射,使得原来的非线性问题在映射之后的空间 ...

  2. RMAN备份演练进阶篇

    前篇介绍了通过rman进行各种备份,进阶篇则主要是rman的一些功能扩展和增加功能,利用前篇你已经完全可以完成数据库的备份,而通过本篇你可以更好更方便的完成数据库的备份. 一.建立增量备份 如果数据库 ...

  3. RMAN连接数据库

    连接本地数据库: 方法1: C:\Documents and Settings\Administrator>set oracle_sid=jssweb C:\Documents and Sett ...

  4. 夺命雷公狗---node.js---21之项目的构建在node+express+mongo的博客项目6之数据的遍历

    首先还是来链接数据库,然后就查找,如下所示: /** * Created by leigood on 2016/8/31. */ var express = require('express'); v ...

  5. jQuery触发<a>标签的点击事件后URL不跳转的解决办法

    有HTML代码如下: <a id="workFrame" href="pages/work.html" target="FrameBox&quo ...

  6. javaWeb 使用jsp标签进行防盗链

    /** * 1.新建类继承SimpleTagSupport * 新建2个属性, 添加对应的set方法 * 覆盖doTag()方法 */ import java.io.IOException; impo ...

  7. PHP数组的一些常用函数

    [数组排序]sort()低到高,rsort()高到低.保持键值对应关系使用 asort()和arsort().对键排序ksort()和krsort().随机排序 shuffle(). [数组key相关 ...

  8. JavaEE基础(二)

    1.Java语言基础(常量的概述和使用) A:什么是常量 在程序执行的过程中其值不可以发生改变 B:Java中常量的分类 字面值常量 自定义常量(面向对象部分讲) C:字面值常量的分类 字符串常量 用 ...

  9. 有关对字符串的处理,需要用到List时的简化写法

    这是项目中的需要根据ComputerName来获取IP的一个方法,如果出现多个ComputerName,需要将多个ComputerName的字符串以“:”分开,传进方法中,然后再处理不同的Name,然 ...

  10. SQL编程之高级查询(子查询)以及注意事项

    SQL编程之高级查询(子查询)以及注意事项   1.什么是子查询? 当一个查询是另一个查询的条件时,称之为子查询.子查询可以使用几个简单命令构造功能强大的复合命令.子查询最常用于SELECT-SQL命 ...