1.直线。
直线是最简单的图形。使用X1、Y1两个属性可以设置它的起点坐标,X2、Y2两个属
性则用来设置其终点坐标。控制起点/终点坐标就可以实现平行、交错等效果。
Stroke(笔触)属性的数据类型是Brush(画刷),凡是Brush的派生类均可用于给这个属性
赋值。因为WPF提供了多种渐变色画刷,所以画直线也可以画出渐变效果。同时,Line
的一些属性还帮助我们画出虚线以及控制线段终点的形状。下面的例子综合了这些属
性:
Line.StrokeDashArray属性:StrokeDashArray是一个双精度字符串,指示用于勾勒
形状轮廓的虚线和间距的样式。
Line.StrokeDashCap属性:获取或设置一个 PenLineCap 枚举值,该值指定如何绘
制虚线的两端。
Line.StrokeStartLineCap和Line.StrokeEndLineCap属性:用于设置起点和终点的样
式,也是一个 PenLineCap 枚举值,PenLineCap 枚举值,包括Flat,Square,
Round,Triangle。
2.矩形。
矩形由笔触(Stroke,即边线)和填充(Fill)构成。Stroke属性的设置与Line一
样,Fill属性的数据类型是Brush。Brush是个抽象类,所以我们不可能拿一个Brush类的实
例为Fill属性赋值而只能用Brush派生类的实例进行赋值。WPF的绘图系统包含非常丰富
的Brush类型,常用的有:
SolidColorBrush:实心画刷。在XAML中可以使用颜色名称字符串(如Red、Blue)
直接赋值。
LinearGradientBrush:线性渐变画刷。色彩沿设定的直线方向、按设定的变化点进
行渐变。
RadialGradientBrush:径向渐变画刷。色彩沿半径的方向、按设定的变化点进行渐
变,形成圆形填充。
ImageBrush:使用图片(Image)作为填充内容。
DrawingBrush:使用矢量图(Vector)和位图(Bitmap)作为填充内容。
VisualBrush:WPF中的每个控件都是由FrameworkElement类派生来的,而
FrameworkElement又是由Visual类的方法获得。获得这个可视化的形象后,我们可
以用这个形象进行填充,这就是VisualBrush。比如当我想把窗体上的某个控件拖拽
到另一个位置,当鼠标松开之前需要在鼠标指针下显示一个控件的“幻影”,这个“幻
影”就是用VisualBrush填充出来的一个矩形,并让矩形捕捉鼠标的位置、随鼠标移
动。
3.椭圆。
Ellipse椭圆也是一种常见的几何图形,它的使用方法与矩形没有什么区别。下面的例
子是绘制一个球体,球体的轮廓是正圆(Circle),Width与Height相等的椭圆即是正圆;
球体的光影效果使用径向渐变实现。
4.几何绘图。
想要使用Path绘制图形,首先要知道几何图形数据是如何组合在Data属性中的。Path
的Data属性是Geometry类,但Geometry类是个抽象类,所以我们不可能在XAML中直接
使用<Geometry>标签。
我们可以使用的是Geometry的子类。Geometry子类包括:
LineGeometry:直线几何图形。
RectangleGeometry:矩形几何图形。
EllipseGeometry:椭圆几何图形。
PathGeometry:路径几何图形。
StreamGeometry:PathGeometry的轻量级替代品,不支持Binding、动画等功能。
CombinedGeometry:由多个基本几何图形联合在一起,形成的单一几何图形。
GeometryGruop:由多个基本几何图形组成在一起,形成的几何图形组。
5.绘图的各种线段。
LineSegment 直线段。
ArcSegment 圆弧线段。
BezierSegment 三次贝塞尔曲线段(默认贝斯尔曲线是指三次曲线,所以
Cubic一词被省略)。
QuadraticBezierSegment 二次贝塞尔曲线段。
PolyLineSegment 多直线段。
PolyBezierSegment 多三次方贝塞尔曲线段。
PolyQuadraticBezierSegment 多二次贝塞尔线段。