C#学习笔记:GDI图形高级编程(2)——关于Brush类
2017-07-13 16:06
651 查看
使用GDI图形接口进行绘图时,如果需要填充图形,那么就需要创建一个画刷(Brush)对象。GDI的Brush类本身是抽象类,不能直接实例化,所以GDI API 提供了一下五个类,来扩展Brush,并提供了具体的实现,如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/07/32c3798de2d5b5abf92aee8c11d70e8f)
下面将给出几个简单的例子来说明其用法并展示使用效果。
1、SolidBrush类
(1)代码片段
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/07/94c2b179a5f9eaea9550464f4513cb50)
2、TextureBrush类
(1)代码片段
Graphics g=this.CreateGraphics();
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/07/f776bf3a2265230ca05e6fd2e70c144f)
(3)TextureBrush构造函数的其他重载
TextureBrush类的构造方法有7种重载,上面是最常用的一种,还有一种也比较常用,那就是
TextureBrush(Image bitmap,Rectangle rect),该构造方法的作用就是用矩形截取图片的一部分作为画刷。下面是例子:
运行的效果如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/07/39614bc335ff2e7327f08c89b8a23029)
3、LinearGradientBrush类
使用LinearGradientBrush类还需引用名称空间:
(1)代码片段
LinearGradientBrush类的构造方法有8个,下面将使用由点到点的渐变画刷。
该重载的原型是LinearGradientBrush(PointF point1,PointF point2,Color color1,Color color2),前两个参数表示从点一到点二进行渐变,后两个参数表示从颜色一渐变到颜色二。下面是例子:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/07/8e766622c09481796fdec520db51a669)
4、PathGradientBrush类
使用该类也要引用名称空间:
该类的构造方法也有几个重载,下面是其中的一个。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/07/08e5dd37f48a5191883369fcdf4fbe01)
5、HatchBrush类
引用名称空间:
下面将给出几个简单的例子来说明其用法并展示使用效果。
1、SolidBrush类
(1)代码片段
Graphics g=this.CreateGraphics();
Brush brush=new SolidBrush(Color.FromArgb(0,255,0));//设置画刷的颜色为绿色
g.FillEllipse(brush,100,100,200,200)//画一个椭圆,并用红色填充(2)运行效果
2、TextureBrush类
(1)代码片段
Graphics g=this.CreateGraphics();
Bitmap map=new Bitmap("001.jpg");//载入一张图片
Brush brush=new TexureBrush(map);//创建一个文理画刷
g.FillRectangle(brush, 0, 0, 800, 500);//用图片文理填充矩形(2)运行效果
(3)TextureBrush构造函数的其他重载
TextureBrush类的构造方法有7种重载,上面是最常用的一种,还有一种也比较常用,那就是
TextureBrush(Image bitmap,Rectangle rect),该构造方法的作用就是用矩形截取图片的一部分作为画刷。下面是例子:
Graphics g=new CreateGraphics();
Bitmap map=new Bitmap("001.jpg");
Rectangle rect=new Rectangle(0,0,200,200);//创建一个矩形结构
Brush brush=new TextureBrush(map,rect);//用矩形来截取图片的一部分作为填充文理
g.FillRectangle(brush,0,0,800,500);
运行的效果如下:
3、LinearGradientBrush类
使用LinearGradientBrush类还需引用名称空间:
Using System.Drawing.Drawing2D
(1)代码片段
LinearGradientBrush类的构造方法有8个,下面将使用由点到点的渐变画刷。
该重载的原型是LinearGradientBrush(PointF point1,PointF point2,Color color1,Color color2),前两个参数表示从点一到点二进行渐变,后两个参数表示从颜色一渐变到颜色二。下面是例子:
Graphics g=this.CreateGraphics();
PointF p1=new PointF(0,0);//p1点在(0,0)处
PointF p2=new PointF(800,500);//p2点在(800,500)处
Color c1=Color.FromArgb(255,0,0);
Color c2=Color.FromArgb(0,255,0);
Brush=new LinearGradientBrush(p1,p2,c1,c2);
g.FillRectangle(brush,0,0,800,500);(2)运行效果
4、PathGradientBrush类
使用该类也要引用名称空间:
Using System.Drawing.Drawing2D(1)代码片段
该类的构造方法也有几个重载,下面是其中的一个。
Graphics g=this.CreateGraphics();
Point[] points=new Point[4];//生成路径的顶点
points[0] = new Point(10, 10); points[1] = new Point(200, 50); points[2] = new Point(250, 150); points[3] = new Point(200, 250);
Color[] colors = new Color[4];//路径各顶点的颜色 colors[0] = Color.FromArgb(255, 0, 0); colors[1] = Color.FromArgb(255, 255, 0); colors[2] = Color.FromArgb(255, 0, 255); colors[3] = Color.FromArgb(0, 0, 255);
PathGradientBrush brush=new PathGradientBrush(pionts);//将路径的顶点传给画刷
brush.CenterPoint=new Point(200,150);//设定图形的中心点
brush.SurroundColors = colors;//设定图形轮廓各顶点的颜色
g.FillPolygon(brush, points);//填充多边形(2)运行的效果
5、HatchBrush类
引用名称空间:
Using System.Drawing.Drawing2D(1)代码片段
Graphics g=this.CreateGraphics();
HatchBrush brush=new HatchBrush(HatchStyle.DashedDownwardDiagonal,Color.FromArgb(255,0,0));
//第一个参数是图案的类型,只能从HatchStyle里面去选
g.FillRectangle(brush, 0, 0, 500, 200);(2)运行效果
相关文章推荐
- C#学习笔记:GDI图形高级编程(1)——如何将图形画到控件上
- C#2005 .NET3.0高级编程学习笔记————流控制
- C#2005 .NET3.0高级编程学习笔记————结构,部分类,静态类,Object类
- C#2005 .NET3.0高级编程学习笔记————类和结构,类的数据成员,类的函数成员(方法、属性)
- C#学习笔记之使用GDI绘制简单的图形
- C#2005 .NET3.0高级编程学习笔记———.NET体系结构
- C#2005 .NET3.0高级编程学习笔记———C#基础
- C#2005 .NET3.0高级编程学习笔记————类的函数成员(构造函数,只读字段)
- C#2005 .NET3.0高级编程学习笔记————接口
- C#2005 .NET3.0高级编程学习笔记————继承
- C#高级编程 学习笔记(一) 第一个C#程序
- C#2005 .NET3.0高级编程学习笔记————命名空间
- C#2005 .NET3.0高级编程学习笔记————类和结构,类的数据成员,类的函数成员(方法、属性)
- C#可扩展编程之MEF学习笔记(五):MEF高级进阶
- C#2005 .NET3.0高级编程学习笔记————编程规则
- C#2005高级编程Chapter11内存管理和指针学习笔记
- C语言高级编程学习笔记--指针
- Oracle专家高级编程学习笔记(一)
- Oracle专家高级编程学习笔记( 二)
- Web服务高级编程学习笔记(一)