SolidBrush继承自Brush,表示单色的笔刷。
Brushes 类则继承自System.Object。它提供了一些标准颜色的画笔,包含静态的只读属性,这些属性返回由属性名指示的颜色的 Brush 对象。通常不必显式处置由此类中的属性返回的画笔,除非该画笔用于构造新画笔。因此,没有必要创建Brushes 类的实例
可以这么看Brush brush = Brushes.Green 和 Brush brush = new SolidBrush(Color.Green) 是等效的。只不过后者一般是需要 brush.Dispose() 的,前者不需要。
还有其他的继承自 Brush 的类
System.Drawing.Drawing2D.HatchBrush(阴影、前景色和背景色定义的矩形笔刷)
System.Drawing.Drawing2D.LinearGradientBrush(线性渐变笔刷)
System.Drawing.Drawing2D.PathGradientBrush(用渐变填充 GraphicsPath 对象的内部的笔刷)
System.Drawing.TextureBrush(用图像来填充形状的内部的笔刷)

//实现功能:用Brush画图

//   1)创建的渐变色Brush(LinearGradientBrush,用完后应及时Dispose.)

//   2)用Brushes绘图.(无须创建Brush)

//  3)创建自定义颜色的SolidBrush

//   4)画矩形,椭圆,扇形,多边形

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Drawing.Drawing2D;//另添加

namespace myDrawBrushA

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

SetStyle(ControlStyles.Opaque, true);//本例由于在OnPaint()中将客户区先涂上白色后再绘画,所以此句可有可无。

}

protected override void OnPaint(PaintEventArgs e)

{

//base.OnPaint(e);

Graphics g = e.Graphics;

g.FillRectangle(Brushes.White, ClientRectangle);//全部客户区涂上白色

g.FillRectangle(Brushes.Red, new Rectangle(20, 20, 80, 80));//红色正方形

//以下创建一个Brush画渐变色正方形

Brush linearGradientBrush = new LinearGradientBrush(

new Rectangle(20, 110, 80,80), Color.Blue, Color.White,45);//创建渐变色brush,渐变方向:45-左上至右下;90-向下:......

g.FillRectangle(linearGradientBrush, new Rectangle(20, 110, 80, 80));//画渐变色正方形

linearGradientBrush.Dispose();//注意及时删除渐变色brush

//以下用Brushes(不要创建Brush)

g.FillEllipse(Brushes.Aquamarine, new Rectangle(110,20, 100, 60));//椭圆(前两个参数是外接矩形左上角坐标)

g.FillPie(Brushes.Chartreuse, new Rectangle(110, 110, 80, 80), 90, 270);//扇形(207为圆心角度数,90为扇形旋转的角度

g.FillPolygon(Brushes.BlueViolet, new Point[]{

new Point(220,10),

new Point(300,10),

new Point(250,40),

new Point(350,80),

new Point(230,100)

});       //多边形

//以下用创建自定义颜色的SolidBrush画圆

SolidBrush trnsRedBrush = new SolidBrush(Color.FromArgb(120, 255, 0, 0));

SolidBrush trnsGreenBrush = new SolidBrush(Color.FromArgb(120, 0, 255, 0));

SolidBrush trnsBlueBrush = new SolidBrush(Color.FromArgb(120, 0, 0, 255));

// Base and height of the triangle that is used to position the

// circles. Each vertex of the triangle is at the center of one of the

// 3 circles. The base is equal to the diameter of the circles.

float triBase = 50;

float triHeight = (float)Math.Sqrt(3 * (triBase * triBase) /4);

// Coordinates of first circle's bounding rectangle.

float x1 = 200;

float y1 = 100;

// Fill 3 over-lapping circles. Each circle is a different color.

g.FillEllipse(trnsRedBrush, x1, y1, 2 * triHeight, 2 * triHeight);

g.FillEllipse(trnsGreenBrush, x1 + triBase / 2, y1 + triHeight,

2 * triHeight, 2 * triHeight);

g.FillEllipse(trnsBlueBrush, x1 + triBase, y1, 2 * triHeight, 2 * triHeight);

}

}

}

画图------Brush的更多相关文章

  1. Graphics 导出图片使用【这个主要是画图类图的使用,记录一下】

    /// <summary> /// 导出信令流程矢量图 /// </summary> /// <param name="signalFlowInfos" ...

  2. html5之canvas画图

    导航 前言 基本知识 绘制矩形 清除矩形区域 圆弧 路径 绘制线段 绘制贝塞尔曲线 线性渐变 径向渐变(发散) 图形变形(平移.旋转.缩放) 矩阵变换(图形变形的机制) 图形组合 给图形绘制阴影 绘制 ...

  3. c#代码画图

    说明:此示例代码在我做的一个项目中  不过还是可以学习一下 一:直角坐标系显示数据 先看效果图:

  4. 与众不同 windows phone (17) - Graphic and Animation(画图和动画)

    原文:与众不同 windows phone (17) - Graphic and Animation(画图和动画) [索引页][源码下载] 与众不同 windows phone (17) - Grap ...

  5. C#后台画图保存为ipg/png的文件

    public void Exec1()        { string imgurl = @"http://api.senwoo.com/Content/HeadPortrait/" ...

  6. AutoCAD 凸度(bulge)的概念及使用WPF函数画图

    前言  凸度(bulge)是AutoCAD 中一个非常重要的概念,凸度控制着两点之间弧度大小,弧度的方向.各种复杂的图像有可能就是成百上千的弧线组成的.从AutoCAD中导出的数据也有该值,一般的形式 ...

  7. WPF 使用 Direct2D1 画图入门

    本文来告诉大家如何在 WPF 使用 D2D 画图. 本文是一个系列 WPF 使用 Direct2D1 画图入门 WPF 使用 Direct2D1 画图 绘制基本图形 WPF 使用 SharpDX WP ...

  8. WPF 使用 Direct2D1 画图 绘制基本图形

    本文来告诉大家如何在 Direct2D1 绘制基本图形,包括线段.矩形.椭圆 本文是一个系列 WPF 使用 Direct2D1 画图入门 WPF 使用 Direct2D1 画图 绘制基本图形 本文的组 ...

  9. 【转】C#中Graphics的画图代码

    C#中Graphics的画图代码[转] 架上图片了你就可以在画板上涂改了啊 我要写多几个字上去string str = "Baidu"; //写什么字?Font font = Fo ...

随机推荐

  1. web浏览器下的缓存 - Etag

    设置浏览器缓存的几种方法: Last-Modified : 服务器上文件的最后修改时间 Etag  : 文件标识 Expiers : 本地缓存目录中文件过期的时间 ( 由服务器指定具体的时间 ) Ca ...

  2. TweenMax动画库学习(四)

    目录            TweenMax动画库学习(一)            TweenMax动画库学习(二)            TweenMax动画库学习(三)            Tw ...

  3. flex 弹性盒子模型一些案例.html

    Flexbox是布局模块,而不是一个简单的属性,它包含父元素和子元素的属性. Flex元素是可以让你的布局根据浏览器的大小变化进行自动伸缩. 自适应导航 <ul class="navi ...

  4. 开源 侧滑 和 Tab滑动翻页 控件

    侧滑 https://github.com/jfeinstein10/SlidingMenu Tab滑动翻页 https://github.com/astuetz/PagerSlidingTabStr ...

  5. Android源代码编译——编译

    环境准备好了,代码下载完了,据说make一下就可以. 当然也可以配置一下环境变量: 编译初始化,在终端中执行: source build/envsetup.sh 选择编译目标,在终端中执行下面的命令: ...

  6. 用python实现了一下:甲乙两人互猜数字(数理逻辑)

    今天在园子里看到博客:超难面试题:甲乙两人互猜数字(数理逻辑).然后琢磨了半天,写了个Python程序实现算法,我得出来的结果是1,6或1,8或35,42的组合, 不知道是否正确,请高人指点? 下面列 ...

  7. spark向量

    转自 1.本地向量MLlib的本地向量主要分为两种,DenseVector和SparseVector,顾名思义,前者是用来保存稠密向量,后者是用来保存稀疏向量,其创建方式主要有一下三种(三种方式均创建 ...

  8. ubuntu14.04 中文输入法无法使用

    说下我的解决方法吧,我是忘了在All Settings -> Text Entry 的 Input sources to use中添加Chinese(Pinyin)了,添加后就好了. from: ...

  9. 在MVVMLight框架的ViewModel中实现NavigationService

    网上已经有很多方法了,比如通过Messenger来实现等等.这里我只讲述一种我比较喜欢的方法,因为它很方便 首先定义一个ViewModel基类,将所有ViewModel子类继承这个基类.在基类中定义 ...

  10. mysql子查询优化

    ,,,) ) LIMIT 第一种方式in where:2000ms SELECT COUNT(*) AS tp_count FROM xxx_b2c_orders o ,,,) and from xx ...