Geomery描述二维集合图形
简单的几何图形类包括LineGeometry, RectangleGeometry,和EllipseGeometry和用于创建基本的几何形状,如线条、 矩形和圆形。
<Path Stroke="Black" StrokeThickness="1" >
<Path.Data>
<LineGeometry StartPoint="10,20" EndPoint="100,130" />
</Path.Data>
</Path>
路径几何:
PathGeometry类和它轻量的等效项,StreamGeometry类中,提供了一种用于描述多个复杂的数字组成弧、 曲线和行。
核心PathGeometry是一套PathFigure对象,这样命名是因为每个图描述了中的一个离散形状PathGeometry。 每个PathFigure本身包含一个或多个PathSegment对象,其中每个描述图一段。
有多种类型的线段。
线段类型 | 描述 | 示例 |
---|---|---|
ArcSegment | 创建两个点之间的椭圆弧。 | 创建椭圆弧。 |
BezierSegment | 创建两个点之间的三次方贝塞尔曲线。 | 创建三次方贝塞尔曲线。 |
LineSegment | 创建两个点之间的直线。 | 在 PathGeometry 中创建 LineSegment |
PolyBezierSegment | 创建一系列三次方贝塞尔曲线。 | 请参阅PolyBezierSegment类型页。 |
PolyLineSegment | 创建一系列直线。 | 请参阅PolyLineSegment类型页。 |
PolyQuadraticBezierSegment | 创建一系列的二次贝塞尔曲线。 | 请参阅PolyQuadraticBezierSegment页。 |
QuadraticBezierSegment | 创建一条二次贝塞尔曲线。 | 创建二次贝塞尔曲线。 |
中的线段PathFigure合并为单个几何形状下, 一段的起始点每一条线段的终点。 StartPoint属性PathFigure指定从中提取第一条线段的点。 每个后续线段都从上一线段的终点开始。 例如,从竖线10,50
到10,150
可以通过设置定义StartPoint属性10,50
和创建LineSegment与Point属性设置的10,150
。
<Path Stroke="Black" StrokeThickness="1">
<Path.Data>
<PathGeometry>
<PathGeometry.Figures>
<PathFigure StartPoint="10,20">
<PathFigure.Segments>
<LineSegment Point="100,130"/>
</PathFigure.Segments>
</PathFigure>
</PathGeometry.Figures>
</PathGeometry>
</Path.Data>
</Path>
复合几何
可以使用创建的复合几何图形对象GeometryGroup、 CombinedGeometry,或通过调用静态Geometry方法Combine。
-
CombinedGeometry对象和Combine方法执行布尔操作,以合并两个几何图形由定义的区域。 Geometry 有没有区域的对象将被丢弃。 只有两个Geometry(尽管这两个几何图形也可能是复合几何图形),可以组合对象。
-
GeometryGroup类创建的组合体Geometry对象但不合并其区域包含。 任意数量的Geometry对象可以添加到GeometryGroup。有关示例,请参阅创建复合形状。
因为它们不会执行合并操作,所以使用GeometryGroup对象通过使用提供的性能优势CombinedGeometry对象或Combine方法。
合并几何
上一部分中所述CombinedGeometry对象和Combine方法组合它们包含的几何图形由定义的区域。 GeometryCombineMode枚举指定几何图形的组合的方式。 可能值GeometryCombineMode属性: Union, Intersect, Exclude,和Xor。
在下面的示例中,CombinedGeometry定义组合模式的联合。 同时Geometry1和Geometry2定义圆的半径相同,但是中心偏移量为 50。
<Path Stroke="Black" StrokeThickness="1" Fill="#CCCCFF">
<Path.Data>
<!-- Combines two geometries using the union combine mode. -->
<CombinedGeometry GeometryCombineMode="Union">
<CombinedGeometry.Geometry1>
<EllipseGeometry RadiusX="50" RadiusY="50" Center="75,75" />
</CombinedGeometry.Geometry1>
<CombinedGeometry.Geometry2>
<EllipseGeometry RadiusX="50" RadiusY="50" Center="125,75" />
</CombinedGeometry.Geometry2>
</CombinedGeometry>
</Path.Data>
</Path>