1. 程式人生 > WINDOWS開發 >WPF-2D圖形(二)Geometry幾何體

WPF-2D圖形(二)Geometry幾何體

Geometry有很多子類,可以分成基本幾何體(basic geometry)和聚合幾何體(aggregate geometry)。

-------------------------------------------------------------------------------------------------------------------------------------------------------

基本幾何體分類

1、RectangleGeometry

包括定義尺寸的Rect類,和圓角的X,Y軸的半徑,RadiusX和RadiusY。

2、EllipseGeometry

包括RadiusX和RadiusY和Center(中心點)屬性。

3、LineGeometry

包括StartPoint(開始點)和EndPoint(結束點)。

4、PathGeometry

在它的Figure(輪廓)內容屬性中包含一組PahtFigure物件的集合。

前面三種幾何體是PathGeometry的特例,可以用PathGeometry表示任何幾何體。

--------------------------------------------------------------------------------------------------------------------------------------------------------

PathGeometry是最強大的畫幾何類,重點說下它

PahtGeometry包括PathFigure和PathSegment。這兩個都是集合。

每一個PathFigure包含一個或多個連線起來的PathSegment。PathSegment僅僅是一個線段,它有7個派生類。

1、LineSegment

用於表示線段的類。

2、PolyLineSegment

用於表示線段連線順序的快捷方式

3、ArcSegment

用於表示假想的橢圓上週線上的曲線段的類。

4、BezierSegment

用於表示三次貝塞爾曲線段的類

5、PolyBezierSegment

用於表示一組BezierSegment的連線順序的快捷方式

6、QuadraticBezierSegment

用於表示二次貝塞爾曲線段的類

7、PolyQuadraticBezierSegment

用於表示一組QuadraticSegment的連線順序的快捷方式

-----------------------------------------------------------------------------------------------------------------------------------

開始舉例子了

<Image>
    <Image.Source>
          <DrawingImage>
                <DrawingImage.Drawing>
                      <GeometryDrawing>
                            <GeometryDrawing.Pen>
                                <Pen Brush="Black" Thickness="10"></Pen>
                            </GeometryDrawing.Pen>
                            <GeometryDrawing.Geometry>
                                <PathGeometry>
                                    <PathFigure>
                                        <LineSegment Point="0,100"></LineSegment>
                                        <LineSegment Point="100,100"></LineSegment>
                                    </PathFigure>
                                </PathGeometry>
                            </GeometryDrawing.Geometry>
                        </GeometryDrawing>
                 </DrawingImage.Drawing>
            </DrawingImage>
       </Image.Source>
 </Image>

這裡畫了一個L,兩條直線;LineSegment僅有一個point屬性,記錄結束點的座標;起始點的座標,第一條線預設是0,0,其他線的預設是上一條線的結束點。這樣就自動把所有直線連線上了。

如果要自定義起始點,在PathFigure加個屬性StartPoint="10,10"。

在討論下GeometryDrawing.Brush是否對這個例子有效。

在GeometryDrawing加個屬性Brush=“Red”;顏色填充了PathFigure,PathFigure其實是封閉的,只是這條封閉了這個幾何體的線是否顯示的問題。

讓這條封閉線顯示出來。有兩種方法,直接再補一條point值等於Pathfigureqi起始點的LineSegment;或者給PahtFigure加個屬性IsClosed="True"。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

PathGeometry的PathFigure是一個集合,可以包括多個幾何體形成組合。