飘遥的Blog

C/C++/.NET
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

乱弹琴 Silverlight 2.0 (13) 几何图形(Geometry)(一)概述

Posted on 2008-04-17 03:38  Zzx飘遥  阅读(549)  评论(0编辑  收藏  举报

前言:Silverlight 2.0 Beta1 已经发布,加入了许多激动人心的新特性:WPF UI 框架、丰富的控件、丰富的网络支持、丰富的基础类库支持等。这是本人的学习笔记,写的比较乱,因此定名为乱弹琴Silverlight 2.0 系列文章。

本篇概要介绍几何图形(Geometry)。

使用 Geometry 类以及派生自它的其他类(如 EllipseGeometry、PathGeometry 和 CombinedGeometry),只定义形状的几何图形,无法呈现自身,不参与布局系统,其派生类可以作为UIElement的内容。

System.Object
  System.Windows.Threading.DispatcherObject
    System.Windows.DependencyObject
      System.Windows.Freezable
        System.Windows.Media.Animation.Animatable
          System.Windows.Media.Geometry
            System.Windows.Media.EllipseGeometry
            System.Windows.Media.GeometryGroup
            System.Windows.Media.LineGeometry
            System.Windows.Media.PathGeometry
            System.Windows.Media.RectangleGeometry

Geometry类可绘制直线、曲线、形状等二维几何图形,也可定义命中测试和剪辑区域,甚至可以定义动画。
Freezable 功能:由于继承自 Freezable 类,因此 Geometry 类提供了一些特殊功能:Geometry 对象可在多个对象之间共享、设为只读以提高性能、进行克隆以及设为线程安全等。

Geometory可以通过Path对象的Data属性来呈现。Path 对象可以绘制闭合或开放的形状、多个形状,甚至曲线形状。Path.Data用来获取或设置指定要绘制的形状的 Geometry。
PathGeometry 类提供了描绘由弧线、曲线和直线组成的多个复杂图形的方法。
PathGeometry 的核心是 PathFigure 对象的集合。PathFigure 自身又由一个或多个 PathSegment 对象组成,每个这样的对象均描绘图形的一条线段,线段有多种类型:

ArcSegment  在两个点之间创建一条椭圆弧线。
BezierSegment  在两个点之间创建一条三次方贝塞尔曲线。
LineSegment  在两个点之间创建一条直线。
PolyBezierSegment  创建一系列三次方贝塞尔曲线。
PolyLineSegment  创建一系列直线。
PolyQuadraticBezierSegment  创建一系列二次贝塞尔曲线。
QuadraticBezierSegment  创建一条二次贝塞尔曲线。

PathFigure 的 StartPoint 属性指定绘制第一条线段的起始点。后面的每条线段都以上一条线段的终点作为起点。

复合几何图形:使用 GeometryGroup,可以创建复合几何图形对象。

·GeometryGroup 类创建它所包含的 Geometry 对象的组合体,但不合并其面积。可以向 GeometryGroup 中添加任意数量的 Geometry 对象。