GDI+基础知识三 钢笔(pen)和笔刷(brush) 1
来源:互联网 发布:learning python mobi 编辑:程序博客网 时间:2024/06/11 01:32
在谈到绘制图形时,钢笔和笔刷是最基本的工具。在Graphics类中,大多数函数都需要使用Pen或Brush对象,在GDI+中,Pen类主要用于绘制直线、曲线和图形的边框,而Brush类以各种颜色和图案填充或描绘图形。这两个类在GDI+中使用非常频繁。
首先看Pen类,主要介绍:
不同线宽度的钢笔
绘制实线、点画线和虚线的钢笔,以及如何配置这些样式
绘制带箭头和其他形状的线段的钢笔
连接线段的不同方式
然后是Brush类,主要介绍:
纹理笔刷的行为,以及如何使用它们
如何使用线性渐变笔刷给自定义控件绘制平滑而时尚的外观
如何使用HatchBrush类以指定的图案填充某个区域
最后将描述如何使用笔刷创建钢笔。这个技术允许使用笔刷类型的样式执行钢笔的类型操作,为创建各种类型的效果提供了更大的灵活性。
1.控制钢笔的属性
先创建一个最简单的例子,在vs中新建一个windows窗体应用程序,事件面板中双击进入Paint事件,添加如下代码:
Graphics g = e.Graphics; //创建Graphics对象,为绘图做准备
g.FillRectangle(Brushes.White, this.ClientRectangle);//将客户区域设置为白色
Pen p = new Pen(Color.Black, 5); //设置钢笔颜色为黑色,宽度为5,可以F12看看Pen的构造函数有哪些
g.DrawLine(p, 10, 10, 50, 50); //使用钢笔画一条线段,起点坐标(10,10),终点坐标(50,50)
p.Dispose(); //释放钢笔所用资源
g.Dispose();
效果图:
实际上,Pen类有两个构造函数,各两种方式
第一个构造函数的两种方式:
//Specified color,default width(1px)
Pen p1 = new Pen(myColor);
//Specified color, Specified width(px)
Pen P2 = new Pen(myColor, myWidth);
第二个构造函数的两种方式:(合并使用钢笔和笔刷的功能)
Pen p3 = new Pen(myBrush);
Pen p4 = new Pen(myBrush,myWidth);
2.绘制短划线
//关键部分的代码
Pen p = new Pen(Color.Black, 5);
p.DashStyle = DashStyle.Dash;
g.DrawLine(p, 3, 3, 100, 3);
效果图:
DashStyle枚举由System.Drawing.Drawing2D命名空间提供,它提供了5个预定义的样式:Solid、Dash、DashDot、DashDotDot和Dot。可以自己尝试下。
短划线也可以自己定制,方法是使用一个整数数组,描述短线以及短线之间距离的像素长度,如:
Graphics g = e.Graphics;
g.FillRectangle(Brushes.White, this.ClientRectangle);
Pen p = new Pen(Color.Black, 2);
float[] f = {15, 5, 10, 5};
p.DashPattern = f;
g.DrawRectangle(p, 10, 10, 80,100);
p.Dispose();
g.Dispose();
效果图:
当线宽改成5或更大时会有惊喜,试试!
3.箭头和其他线段端部图形
使用line cap可以指定GDI+如何装饰线段的开始和结尾。事实上这表示把值赋予Pen对象的StartCap和EndCap属性。
Pen p = new Pen(Color.Black, 10);
p.StartCap = LineCap.Round;
p.EndCap = LineCap.ArrowAnchor;
g.DrawLine(p,30,30,80,30);
效果图:
可用线段端部和他们的外观:
4.连接线段
线段之间的连接,主要是设置连接处的样式,System.Drawing.Drawing2D命名空间中LineJoin枚举了四个值:Miter(默认值)、Beveled、MiterClipped和Round。下面将使用Round值绘制一个矩形:
Pen p = new Pen(Color.Black, 10);
p.LineJoin = LineJoin.Round;
e.Graphics.DrawRectangle(p, 20, 20, 60, 60);
p.Dispose();
如图,矩形带有圆角
Pens类
为了方便,GDI+提供了141中预定义的彩色钢笔,对应于Color结构中预定义的141种颜色,使用预定义的钢笔会有一些性能上的优势,由于使用Pens类时没有创建对象,所以不需要释放资源。例如绘制一个。略带桃色的矩形:
Graphics g = e.Graphics;
g.FillRectangle(Brushes.White, this.ClientRectangle);
g.DrawRectangle(Pens.MistyRose, 20, 20, 40, 40);
- GDI+基础知识三 钢笔(pen)和笔刷(brush) 1
- GDI+基础知识三 钢笔(pen)和笔刷(brush)2
- GDI+: Pen and Brush
- Pen和Brush
- Brush和pen的asign
- Pen、Brush对象
- GDI-Pen
- GDI-Brush
- C++ GDI+ Brush画刷详解
- 新建winform项目,在其中拖入2个button和1个 PictureBox,1Openfiledialog用Graphics\pen\brush\color\Font\的属性画出不同图案
- 使用Graphics\pen\brush\color\Font\等类和对应的方法属性
- 使用Graphics、pen、brush、color、Font类和对应的方法属性
- GDI+ 1.1 Brush
- Setting the Pen or Brush Color
- 关于笔刷Brush
- PS基础知识:PS钢笔和路径工具应用知识
- 新建winform项目,在其中拖入2个button和1个 PictureBox,1Openfiledialog。使用Graphics\pen\brush\color\Font\等类和对应的方法属性
- (转载)GDI+画刷Brush
- Elevator
- Android 2.1下调试3G模块
- linux 路由资料
- 设置继承的GridView 可以修改
- 机器学习的最佳入门学习资源
- GDI+基础知识三 钢笔(pen)和笔刷(brush) 1
- FatMouse' Trade
- cmd远程Oracle数据
- eventDelete Editor
- 黑马程序员——java异常处理机制
- Socket编程
- Tempter of the Bone
- 中国国内驾照在韩国换驾照的经过
- repo使用小结