雖然詳細地討論視頻和3-D超越了這本書的范圍,但是獲得這些特征的支持是值得的。
視頻由MediaElement類型支持。這個元素可以被添加到UI樹的任何地方。簡單的設置它的Source屬性 以關聯到它要播放的視頻流,如示例7-49所示。
示例7-49
<MediaElement Source="C:\WINDOWS\system32\oobe\images\intro.wmv" Stretch="Fill" />
3-D內容通過Viewport3D支持。直到WPF的外觀系統被關聯,Viewport3D只是一個正規的控件,同時它 可以被設定大小和定位,像其它控件那樣。然而,你提供了這樣的控件,帶有3-D模型、發光、照相機位 置信息。它會生成這個模型。這個控件擔當了一個3-D屏幕上的窗體,正如示例7-50所示。
示例7-50
<Viewport3D ClipToBounds="true">
<Viewport3D.Camera>
<PerspectiveCamera NearPlaneDistance="1" FarPlaneDistance="100"
LookAtPoint="0,0,0" Position="30, -2, 20" Up="0, 0, 1"
FieldOfView="45" />
</Viewport3D.Camera>
<Viewport3D.Models>
<Model3DGroup>
<DirectionalLight Color="#FFFFFFFF" Direction="10,25,-1" />
<AmbientLight Color="#66666666" />
<GeometryModel3D>
<GeometryModel3D.Geometry>
<MeshGeometry3D
TriangleIndices="0 1 2 1 2 3 2 3 0 0 1 3"
Normals="-1,-1,0 1,-1,0 1,0,0 0,0,1"
Positions="-2,-2,-2 2,-2,-2 0,2,-2 0,0,1"/>
</GeometryModel3D.Geometry>
<GeometryModel3D.Material>
<MaterialGroup>
<DiffuseMaterial Brush="LightGreen" />
<SpecularMaterial Brush="White" />
</MaterialGroup>
</GeometryModel3D.Material>
</GeometryModel3D >
</Model3DGroup>
</Viewport3D.Models>
</Viewport3D>
這就建立了一個非常簡單的3-D模型,包含了一個單獨的基於正方形的錐形。圖7-58顯示了結果。這個 模型還包含了一些光源來保證模型是可見的。這個Viewport還有一個詳細指出的照相機位置。
圖7-58
實際上,你可以正常的使用任意類型的3-D設計工具模型,因此你不能典型地希望和模型標記一起工作 ,如示例7-50所示。Viewport3D僅提供了一個便利的方法,將結果集成到你的可視化樹中。