在GDI+中,可使用笔刷,以各种个颜色和图像填充图形,GDI+的Brush类本身是一个抽象的类,所以是不能实例化Brush的

但是GDI+的API提供五个类,就扩展了Brush类并提供了具体的实现方式

SolidBrush        使用纯颜色填充图形

TextureBrush       使用基于光栅的图像(位图,JPG等图像)填充图形

LinearGradientBrush    使用颜色渐变填充图形

PathGradientBrush     使用渐变色填充图形,渐变方向是从有路径定义的图像便捷指                                                      向 图形的中心

HatchBrush        使用各类图案填充图形

1.solidBrush实例

 private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
//定义红色笔刷 brush为抽象类所以不能实例化
Brush sh = new SolidBrush(Color.Red);
//填充椭圆
g.FillEllipse(sh,0,80,245,200);
}
//用户定义单色画笔,画笔用于填充图形形状,如矩形 椭圆,扇形,多边形和封闭路径

2.TextureBrush实例

 private void Form1_Paint(object sender, PaintEventArgs e)
{
Image a = Image.FromFile(@"d:\my documents\visual studio 2013\Projects\13.3Brush五大API\13.3Brush五大API\Image\2323.jpg");
Graphics g = e.Graphics;
Brush sh = new TextureBrush(a);
g.FillEllipse(sh,0,80,445,200);
//释放资源
g.Dispose();
}

3.LineargradientBrush

  使用颜色的线性渐变填充图形,如白色渐变到黑色。在使用此类前要先引入System.Drawing.Drawing2D命名空间

GDI+提供水平、垂直、和对角线方向线性渐变。在默认情况下,线性渐变中的颜色均匀地变化。当然,也可自定义线性渐变,使颜色非均匀变化。

private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
//定义渐变线行=2个点2个颜色
LinearGradientBrush gh = new LinearGradientBrush(new Point(0, 80), new Point(280, 120), Color.Red, Color.Green);
Brush sh = gh;
g.FillEllipse(sh,0,80,240,240);
       g.Dispose();
}

4.PathGradientBrush

  使用户可以自定义用渐变色填充形状的方式。在GDI+中,路径是由GraphicsPath对象维护的一系列线条和曲线。在使用此类前腰引入System.Drawing.Drawing2D命名空间。

 private void Form1_Paint(object sender, PaintEventArgs e)
{
//定义制图路径
GraphicsPath gp = new GraphicsPath();
//添加一个椭圆
gp.AddEllipse(0,80,280,120);
//路径刷
PathGradientBrush pgb = new PathGradientBrush(gp);
//设置渐变的中心颜色
pgb.CenterColor = Color.FromArgb(255,255,0,0);
//定义color数组来接收
Color[] ll = {Color.FromArgb(255,255,0,0) };
//填充中心点对应的数组
pgb.SurroundColors = ll;
//填充椭圆
e.Graphics.FillEllipse(pgb,0,80,280,120);
pgb.Dispose();
}

5.HatchBrush

  阴影图案由两种颜色组成:一种背景颜色,一种是在背景上形成图案的线条的颜色,若要用阴影图案填充闭合的形状,需使用HatchBrush类的对象。

在使用此类前要先引入System.Drawing.Drawing2D命名空间。

//定义阴影样式
HatchBrush hat = new HatchBrush(HatchStyle.Horizontal,Color.Yellow,Color.Red);
//定义画刷
Brush gr = hat;
//填充
e.Graphics.FillEllipse(gr,0,80,280,240);
//释放
e.Dispos();

  

  

最新文章

  1. 定制Android透明按钮
  2. 从Android系统出发,分析Android控件构架
  3. 三种另外的循环 while{} 和do{}while{}还有switch case
  4. poj1258 Agri-Net (prim+heap)
  5. linux 使用 pyodbc 访问 ms sqlserver 数据库
  6. LAMP环境的搭建
  7. python+mysql抓取百度新闻的标题存到数据库
  8. 自学Zabbix3.2-配置功能简介
  9. 认识python中的set集合及其用法
  10. 《精通android网络开发》--使用Socket实现数据通信
  11. 尚学堂马士兵struts2 课堂笔记(四)
  12. bfs经典
  13. Ocelot的学习
  14. MySQL分页时统计总记录行数并使用limit返回固定数目的记录
  15. Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable) E: Unable to lock the administration di
  16. (转载)Android下Affinities和Task
  17. JS----文档对象模型
  18. (转)JDK安装配置教程
  19. ubuntu16。04LST配置nfs实现服务器和客户端共享文件
  20. 虚拟机virtualbox中挂载新硬盘

热门文章

  1. centoOS下安装python3 和 pip: command not found
  2. 2019-RHCE-红帽题库(稳定)
  3. c# 中virtual与abstract
  4. c#静态变量赋值问题
  5. k8s安装
  6. spring boot app
  7. Codeforces - 722C 区间合并
  8. day_02 循环格式化输出编码运算符
  9. pyhive -- thrift.transport.TTransport.TTransportException: TSocket read 0 bytes
  10. mysql5.7导出到csv