WPF動(dòng)畫類擴(kuò)展知識(shí)一點(diǎn)通
一個(gè)開發(fā)經(jīng)驗(yàn)豐富的編程人員,應(yīng)該是了解WPF的。它是一款專門用來處理圖形界面的開發(fā)輔助工具。對(duì)WPF動(dòng)畫類的支持大部分收集在 System.Windows.Media.Animation 命名空間中。#t#
這是一個(gè)大型命名空間,其中定義了 164 個(gè)類專用于設(shè)置 22 種特定數(shù)據(jù)類型的動(dòng)畫屬性。這 22 種數(shù)據(jù)類型包括基本數(shù)據(jù)類型(如 byte、int 和 double),也包括更特殊的類型(如 Matrix、Point3D 和 Quaternion)。
v資源毫無疑問是引人入勝的作品,但恐怕只有非編程人員才會(huì)認(rèn)為這 22 種數(shù)據(jù)類型就足夠滿足各種應(yīng)用程序。我個(gè)人經(jīng)常開發(fā)希望對(duì)整個(gè)對(duì)象集合實(shí)現(xiàn)動(dòng)畫效果的應(yīng)用程序,尤其是坐標(biāo)點(diǎn)的集合?,F(xiàn)有的 API 為我們提供了類(如 PointAnimation 和 Point3DAnimation)來制作單獨(dú)的 2D 或 3D 坐標(biāo)的動(dòng)畫,但我希望 PointCollectionAnimation 和 Point3DCollectionAnimation 類通過在兩個(gè)集合的相應(yīng)成員之間插入來制作整個(gè)坐標(biāo)點(diǎn)集合的動(dòng)畫。
通常,我們可能會(huì)責(zé)怪 Microsoft .NET Framework(尤其是 WPF)使得定義對(duì)象集合如此輕松,使用起來如此便利,就像使用對(duì)象本身一樣。WPF 已定義了 PointCollection 和 Point3DCollection 類,而且在 XAML 中,這些集合的使用方法非常簡(jiǎn)單。在 XAML 中,分配 Point 類型的屬性和分配 PointCollection 類型的屬性之間的差別就像鍵入“100 50”和“100 50, 40 25, 35 80, 50 100”之間的差別一樣。因此,我想為什么使這些類型的屬性具有動(dòng)畫效果不能像這般簡(jiǎn)單呢?
假定 PointCollectionAnimation 類將會(huì)使 PointCollection 類型的屬性具有動(dòng)畫效果。WPF 中內(nèi)置的五個(gè)類具有該類型的屬性:Polyline、Polygon(兩者均源于 Shape)、PolyLineSegment、PolyBezierSegment 和 PolyQuadraticBezierSegment(源于 PathSegment)五個(gè)類的屬性均指定為 Points。通過使這些 Points 屬性具有動(dòng)畫效果,您可以將圖形數(shù)字從一個(gè)形狀更改到另一個(gè)具有單個(gè)動(dòng)畫的形狀。
據(jù)我所知,Point3DCollection 僅能在一個(gè)類中顯示,即位于 WPF 3D 圖形系統(tǒng)中心的 MeshGeometry3D 類。通過制作 Point3DCollection would 動(dòng)畫,可以非常輕松地實(shí)現(xiàn) 3D 對(duì)象變形(通常被認(rèn)為是相當(dāng)高級(jí)的 3D 編程任務(wù))。
正是在計(jì)算機(jī)屏幕上切換、變形和改變 2D 和 3D 圖的形狀的想象促使我在擴(kuò)展WPF動(dòng)畫類的道路上不斷前進(jìn)。