第9章-樣式與動畫_第1頁
第9章-樣式與動畫_第2頁
第9章-樣式與動畫_第3頁
第9章-樣式與動畫_第4頁
第9章-樣式與動畫_第5頁
已閱讀5頁,還剩71頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第9章樣式與動畫2Ch9樣式與動畫9.1資源與樣式控制9.2控件模板與觸發(fā)器9.3WPF動畫設(shè)計基礎(chǔ)9.4*動畫變換和特效處理9.1資源與樣式控制9.1.1WPF項目中的文件屬性9.1.2XAML資源9.1.3Style元素9.1.4樣式的級聯(lián)控制和資源字典49.1資源與樣式控制在WPF應(yīng)用程序中,資源是指項目中可以和C#代碼分離的固定不變的信息。資源文件是指不能直接執(zhí)行的文件。例如,圖像、字符串、圖標、聲音、視頻、XAML文件等。資源文件的保存形式,則由其所在文件的【生成操作】屬性來決定。WPF應(yīng)用程序是利用資源對樣式和主題進行控制的。59.1.1WPF項目中的文件屬性文件屬性表示了編譯整個項目以及將文件添加到項目中時處理該文件的方式。一般在【解決方案資源管理器】中選中某個文件,然后通過【屬性】窗口查看或更改該文件的屬性。在更改文件的生成類型后,必須選擇【重新生成】項目,才會應(yīng)用這些更改。如果只選擇【生成】項目,則不會應(yīng)用更改。69.1.1WPF項目中的文件屬性WPF應(yīng)用程序項目中文件的屬性1.復(fù)制到輸出目錄不復(fù)制:指編譯項目時,不將該文件復(fù)制到輸出目錄。始終復(fù)制:指每次編譯項目時,都將該文件復(fù)制到輸出目錄下。如果較新則復(fù)制:指每次編譯項目時,如果項目下的文件比輸出目錄下的文件新,則將項目下的文件復(fù)制到輸出目錄。79.1.1WPF項目中的文件屬性2.生成操作生成操作含

義無不進行任何操作編譯將該文件編譯到擴展名為.exe的可執(zhí)行文件中,如果是庫項目,則編譯到擴展名為.dll的文件中內(nèi)容表示將文件添加到項目中時,生成操作將該文件轉(zhuǎn)換為內(nèi)容(Content),可以利用自定義工具對文件進行轉(zhuǎn)換處理。編譯項目時,該文件不編譯到程序集中,而是隨項目單獨保存嵌入的資源指包含在Properties文件夾下的Resources.resx文件中的資源。編譯項目時,Resources.resx文件會自動被包含到生成的.exe或者.dll文件中Resource表示文件以單獨的形式保存在項目中,與其對應(yīng)的.resx文件只保存這些文件的鏈接。編譯項目時,再將這些文件嵌入到程序集中,即編譯到.exe或者.dll文件中ApplicationDefinition表示該文件是應(yīng)用程序的定義文件Page表示這些文件為XAML資源文件。編譯【生成操作】屬性為Page的文件時,這些文件將被轉(zhuǎn)換為二進制格式編譯到程序集中,即編譯到.exe或者.dll文件中SplashScreen表示該文件是初始屏幕使用的圖像文件89.1.1WPF項目中的文件屬性3.嵌入的資源嵌入的資源是指包含在Properties文件夾下的Resources.resx文件中的資源。一旦將某個文件作為嵌入的資源,系統(tǒng)即自動將其轉(zhuǎn)換為強類型的對象,然后以二進制形式嵌入到Properties文件夾下的Resource.resx文件中。嵌入后無法再修改原始文件的內(nèi)容。99.1.1WPF項目中的文件屬性3.嵌入的資源在多個項目之間共享的資源文件,例如,包含公司徽標、商標信息等文件,可使用嵌入的資源。優(yōu)點:將這些文件作為嵌入的資源后,只需要將Resource.resx文件復(fù)制到其他項目中即可,而不需要復(fù)制關(guān)聯(lián)的資源數(shù)據(jù)文件;缺點:無法修改資源文件的內(nèi)容。將字符串(不是指文本文件)按資源來處理時,必須將其作為嵌入的資源。109.1.1WPF項目中的文件屬性4.鏈接的資源鏈接的資源是指將文件添加到項目中時,在對應(yīng)的擴展名為.resx的文件中只保存這些文件的相對路徑或鏈接,而被鏈接的這些文件仍然單獨存儲,而且可編輯。注意這里所說的“擴展名為.resx的文件”不是指Properties文件夾下的Resource.resx文件,而是指單獨添加到項目中的擴展名為.resx的文件。圖像文件、圖標文件、音頻文件、視頻文件、文本文件以及其他類型的文件都可以作為鏈接的資源。119.1.1WPF項目中的文件屬性5.內(nèi)容文件內(nèi)容文件是指沒有被編譯到程序集內(nèi)的文件,這些文件以單獨的文件形式與項目一起發(fā)布。6.SplashScreenSplashScreen(初始屏幕)是指將某個圖像文件作為程序啟動時,在顯示主窗口之前顯示的屏幕界面。通常由一幅圖像和一種背景色組成。使用初始屏幕的目的是為了讓用戶能看出程序正在加載。129.1.2XAML資源XAML資源是指用XAML描述的在應(yīng)用程序中的不同位置可以重用的對象。例如,樣式(Style)、畫筆(Brush)等都是XAML資源。注意XAML資源和擴展名為.resx的資源文件不是一個概念。XAML資源的擴展名是.xaml而不是.resx,這些文件的【生成操作】屬性都是Page,而且這些文件都會被編譯到程序集中。139.1.2XAML資源1.聲明和引用XAML資源一般在元素的Resources內(nèi)聲明XAML資源。<StackPanel><StackPanel.Resources>

<SolidColorBrushx:Key="MyBrush"Color="Gold"/><Stylex:Key="Title"TargetType="TextBlock"><SetterProperty="HorizontalAlignment"Value="Center"/><SetterProperty="FontSize"Value="30"/></Style></StackPanel.Resources></StackPanel>9.1.2XAML資源1.聲明和引用XAML資源聲明了XAML資源以后,就可以用Style引用聲明的資源。14<Page.Resources><Stylex:Key="TitleText"TargetType="TextBlock"><SetterProperty="HorizontalAlignment"Value="Right"/><SetterProperty="FontFamily"Value="楷體"/><SetterProperty="FontSize"Value="16"/></Style></Page.Resources><TextBlockStyle="{StaticResourceTitleText}">你好!</TextBlock>聲明引用9.1.2XAML資源2.靜態(tài)資源和動態(tài)資源靜態(tài)資源(StaticResource)是指編譯時就已經(jīng)對其進行索引的資源,一旦定義了這些資源,就無法通過C#代碼修改資源的內(nèi)容。用{StaticResourcekeyName}標記擴展引用靜態(tài)資源。執(zhí)行速度快,但無法動態(tài)改變動態(tài)資源(DynamicResource)是指臨時定義的資源,這些資源的內(nèi)容可以通過C#代碼隨時修改。用{DynamicResourcekeyName}標記擴展引用動態(tài)資源??梢詣討B(tài)改變,但執(zhí)行速度慢159.1.3Style元素WPF應(yīng)用程序中的樣式是利用XAML資源來實現(xiàn)的。即在XAML資源中用Style元素聲明樣式和模板,并在控件中引用它。Style元素的常用形式為<Stylex:Key=鍵值TargetType="控件類型"BasedOn="其他樣式中定義的鍵值">

……</Style>169.1.3Style元素(1)隱式樣式設(shè)置(只聲明TargetType)在Style元素的開始標記內(nèi),可以只聲明TargetType而不聲明x:Key,此時x:Key的值將隱式設(shè)置為和TargetType的值相同,該樣式對其控制范圍內(nèi)的所有TargetType中聲明的控件類型都起作用。例如:<StyleTargetType="Button"><SetterProperty="Foreground"Value="Green"/><SetterProperty="Background"Value="Yellow"/></Style>179.1.3Style元素(2)顯式樣式設(shè)置(只聲明x:Key)聲明了x:Key的樣式稱為顯式樣式設(shè)置,即控件只有在顯式樣式設(shè)置下用Style特性引用該x:Key的值時才會起作用。<Stylex:Key="Style1"><SetterProperty="Control.Foreground"Value="Green"/><SetterProperty="Control.Background"Value="Yellow"/></Style>189.1.3Style元素(3)同時聲明x:Key和TargetType如果同時聲明x:Key和TargetType,則只有引用了x:Key的值且控件類型為TargetType中指定的類型的控件才會起作用,而且引用了顯式樣式的控件將不再應(yīng)用隱式樣式。<Stylex:Key="t1"TargetType="TextBlock"><SetterProperty="Foreground"Value="White"/><SetterProperty="Background"Value="Blue"/></Style>199.1.3Style元素(4)樣式繼承(聲明中包含BasedOn)如果樣式聲明中包含BasedOn,則該樣式將繼承BasedOn中定義的樣式。其效果就是將該樣式和BasedOn中的樣式合并起來共同起作用。<Stylex:Key="Style1"><SetterProperty="Control.Background"Value="Yellow"/></Style><Stylex:Key="Style2"BasedOn="{StaticResourceStyle1}"><SetterProperty="Control.Foreground"Value="Blue"/></Style>209.1.3Style元素在<Style>和</Style>之間,既可以用特性語法聲明一個或多個Setter對象,也可以用屬性語法設(shè)置屬性的值。(1)用特性語法定義用特性語法定義Setter時,每個Setter都必須包括Property屬性和Value屬性。例如:<SetterProperty="FontSize"Value="32pt"/>如果存在多個Setter具有相同的Property,則最后的Setter中的Property有效。219.1.3Style元素(2)用屬性語法定義當某些屬性無法用特性語法來描述時,也可以用屬性語法來實現(xiàn),此時在Setter元素中定義Property屬性,在Setter元素的子元素中定義Value屬性。例如:<SetterProperty="RenderTransform"><Setter.Value><TranslateTransformX="0"Y="10"/></Setter.Value></Setter>229.1.3Style元素在XAML資源的<Style>和</Style>之間,可以用EventSetter設(shè)置事件。例如:<StyleTargetType="Button"><SetterProperty="Background"Value="AliceBlue"/><EventSetterEvent="Click"Handler="Button_Click"/></Style>239.1.4樣式的級聯(lián)控制和資源字典1.樣式的級聯(lián)控制根據(jù)XAML資源聲明的位置,可將樣式定義分為不同的級別。(1)內(nèi)聯(lián)式內(nèi)聯(lián)式是指在元素的開始標記內(nèi)直接用特性語法聲明元素的樣式。<TextBlockFontSize="24"FontFamily="楷體">文本</TextBlock>內(nèi)聯(lián)式適用于單獨控制元素樣式的情況。優(yōu)點:設(shè)置樣式直觀、方便;缺點:無法一次性設(shè)置所有窗口或頁面中相同的樣式。249.1.4樣式的級聯(lián)控制和資源字典1.樣式的級聯(lián)控制(2)框架元素樣式框架元素是指從FrameworkElement或FrameworkContentElement繼承的元素,根元素(Window、Page、UserControl等)只是一種特殊的框架元素??蚣茉貥邮绞侵冈诳蚣茉兀òǜ兀┑腞esource屬性中定義的樣式,這種樣式的作用范圍為該元素的所有子元素。259.1.4樣式的級聯(lián)控制和資源字典1.樣式的級聯(lián)控制(3)應(yīng)用程序樣式應(yīng)用程序樣式是指在App.xaml文件的Application.Resources屬性中聲明的樣式。這種樣式的作用范圍為整個應(yīng)用程序項目,對項目中的所有窗口或頁面都起作用。269.1.4樣式的級聯(lián)控制和資源字典2.資源字典資源字典是指在單獨的XAML文件中定義的樣式。在元素樣式、應(yīng)用程序樣式中都可以引用資源字典。例如:<Style><Style.Resources><ResourceDictionarySource="Dictionary1.xaml"/></Style.Resources></Style>還可以在一個資源字典中合并其他的資源字典。279.1.4樣式的級聯(lián)控制和資源字典3.使用C#代碼定義和引用樣式可以在ResourceDictionary對象進行代碼訪問。ResourceDictionaryd1=border1.Resources;d1.Add("backgroundKey",Brushes.Blue);通過對象的Resources[“key”]直接訪問某個XAML資源。使用FindResource(key)方法和TryFindResource(key)方法來搜索XAML資源。Brushb1=(Brush)border1.TryFindResource("backgroundKey");也可以從資源集合中獲取定義的樣式,然后將其分配給元素的Style屬性。textblock1.Style=(Style)(this.Resources["TitleText"]);289.1.4樣式的級聯(lián)控制和資源字典【例9-1】演示樣式的級聯(lián)控制和資源字典的基本用法299.2控件模板與觸發(fā)器9.2.1控件模板9.2.2觸發(fā)器9.2.3主題9.2.1控件模板WPF提供了兩種模板化技術(shù):樣式模板化:用于定義控件的外觀數(shù)據(jù)模板化:主要用于綁定數(shù)據(jù)源。1.樣式模板樣式模板化是指利用控件模板(ControlTemplate)定義控件的外觀,從而讓控件呈現(xiàn)出各種形式。在Style元素中,用Template屬性定義控件的模板319.2.1控件模板1.樣式模板【例9-2】演示樣式模板化的基本用法。329.2.2觸發(fā)器觸發(fā)器(Trigger)是指某種條件發(fā)生變化時自動觸發(fā)某些動作。在<Style>和</Style>之間,可以利用樣式設(shè)置觸發(fā)器。1.屬性觸發(fā)器屬性觸發(fā)器是指用控件的屬性作為觸發(fā)條件。即當對象的屬性發(fā)生變化時自動更改對應(yīng)的其他屬性。有兩種類型的屬性觸發(fā)器:Trigger,用于單條件觸發(fā);MultiTrigger,用于多條件觸發(fā)。339.2.2觸發(fā)器1.屬性觸發(fā)器<StyleTargetType="Button"><SetterProperty="Width"Value="60"/><Style.Triggers><TriggerProperty="IsMouseOver"Value="True"><SetterProperty="Width"Value="80"/></Trigger></Style.Triggers></Style>349.2.2觸發(fā)器2.事件觸發(fā)器事件觸發(fā)器(EventTrigger)是指用路由事件(RoutedEvent)作為觸發(fā)條件,即當引發(fā)指定的路由事件時啟動一組操作,例如,動畫等。3.數(shù)據(jù)觸發(fā)器數(shù)據(jù)觸發(fā)器是利用控件的DataContext來觸發(fā)的。(1)DataTriggerDataTrigger用控件的DataContext的單個屬性作為觸發(fā)條件。(2)MultiDataTriggerMultiDataTrigger用控件的DataContext的多個屬性作為觸發(fā)條件。359.2.2觸發(fā)器【例9-3】演示觸發(fā)器的基本用法。369.2.3主題主題(Themes)也叫外觀,是在系統(tǒng)或應(yīng)用程序級別上定義的一組資源。利用主題,可以一次性指定項目內(nèi)所有元素的默認樣式,為應(yīng)用程序的控件和其他可視元素提供默認的外觀。WPF應(yīng)用程序中,主題是通過資源字典來實現(xiàn)的。對于應(yīng)用程序開發(fā)人員來說,既可以引用系統(tǒng)主題,也可以自定義主題。379.2.3主題1.系統(tǒng)主題系統(tǒng)主題是指操作系統(tǒng)提供的主題,這些主題都保存在對應(yīng)的.dll文件中。如果不指定系統(tǒng)主題,WPF會使用安裝操作系統(tǒng)時默認選擇的主題。2.自定義主題Wpfz項目中包含了自定義主題的代碼,并在ExampleWpfApp項目中引用了Wpfz項目中自定義的主題。389.2.3主題3.如何使用主題(1)添加引用。鼠標右擊項目的【引用】,選擇【添加引用】命令,在彈出的窗口中,勾選要引用的dll文件。(2)鼠標單擊已經(jīng)引用的dll文件,將其【復(fù)制本地】屬性改為True。注意這一步不能省略,否則將無法找到對應(yīng)的主題文件。(3)將使用的主題合并到App.xaml的資源字典中,以便在整個項目中都能使用它。399.3WPF動畫設(shè)計基礎(chǔ)9.3.1WPF動畫計時系統(tǒng)及其分類9.3.2WPF動畫計時系統(tǒng)的常用屬性9.3.3基本動畫9.3.4*關(guān)鍵幀動畫9.3.5*路徑動畫9.3.1WPF動畫計時系統(tǒng)及其分類WPF內(nèi)部實現(xiàn)了一套高效的動畫計時系統(tǒng),開發(fā)人員可利用它直接對控件的附加屬性值進行動畫處理。1.基本概念WPF提供了的動畫類型都在System.Windows.Media.Animation命名空間下。在WPF應(yīng)用程序中,建議盡量使用WPF動畫計時系統(tǒng)。419.3.1WPF動畫計時系統(tǒng)及其分類2.WPF動畫計時系統(tǒng)的分類WPF動畫計時系統(tǒng)分為基本動畫、關(guān)鍵幀動畫和路徑動畫。(1)基本動畫(From/To/By)基本動畫是用From/To或者From/By來實現(xiàn)的。完成過渡所需的時間由Duration屬性來確定?;緞赢嬁煽刂贫喾N類型,這些動畫類的后綴都帶Animation。<類型>AnimationByte、Int16、Int32、Int64、Single、Double、Decimal、Color、Point、Size、Thickness、Rect、Vector、Vector3D、Quaternion、Rotation3D429.3.1WPF動畫計時系統(tǒng)及其分類(1)基本動畫(From/To/By)常用的基本動畫類有DoubleAnimation、ColorAnimation和PointAnimation。DoubleAnimation適用于對Rectangle、Button、Label等控件的寬度、高度、不透明度等Double類型的附加屬性進行動畫處理,如滑動效果、拉簾效果、漸入漸出效果等。ColorAnimation適用于對顏色(前景色、背景色、填充色等)進行漸變動畫處理。PointAnimation適用于對位置進行動畫處理。439.3.1WPF動畫計時系統(tǒng)及其分類(1)基本動畫(From/To/By)基本動畫只需要在相鄰的兩個時間點分別設(shè)置控件的屬性起始值和結(jié)束值。如果同時指定From、By和To,則忽略By的值。從是否可交互以及受支持的程度來看,又可以將基本動畫(From/To/By)進一步細分為:本地動畫、時鐘動畫、故事板動畫。本地動畫一般用于不需要用戶參與交互操作的情況。如果希望通過界面讓用戶參與交互操作,此時可以用時鐘動畫或者故事板動畫(Storyboard)來實現(xiàn)。故事板動畫支持XAML,應(yīng)用范圍更廣,可適用于任何應(yīng)用場合。449.3.1WPF動畫計時系統(tǒng)及其分類(2)關(guān)鍵幀動畫關(guān)鍵幀動畫在基本動畫的基礎(chǔ)上增加了控制動畫變化的關(guān)鍵幀。包含多條“并行執(zhí)行”的時間線(一個屬性對應(yīng)一條時間線),每條時間線上都可以指定多個關(guān)鍵時間點,控件或元素的附加屬性值在這些關(guān)鍵時間點上使用內(nèi)插算法實現(xiàn)每一對兩兩相鄰的關(guān)鍵幀之間逐漸過渡。(3)路徑動畫路徑動畫在關(guān)鍵幀動畫的基礎(chǔ)上又增加了路徑規(guī)劃功能。包含多條并行執(zhí)行的時間線,但是每條時間線上關(guān)鍵時間點上屬性的值是通過事先規(guī)劃的路徑計算出來的。459.3.2WPF動畫計時系統(tǒng)的常用屬性1.故事板和時間線在WPF動畫計時系統(tǒng)中,基本動畫、關(guān)鍵幀動畫以及路徑動畫都是基于故事板(Storyboard類)來實現(xiàn)的。(1)StoryboardStoryboard是一組時間線的容器,它由一條總時間線控制,在它包含的所有時間線上定義的動畫都可以并行執(zhí)行,而且還可以通過該容器整體控制動畫的啟動、暫停、繼續(xù)、停止等交互操作。469.3.2WPF動畫計時系統(tǒng)的常用屬性1.故事板和時間線(1)Storyboard使用Storyboard進行動畫處理需要完成下面的步驟。

聲明一個Storyboard以及一個或多個動畫。

使用TargetName和TargetProperty附加屬性指定每個動畫的目標對象和屬性。

啟動Storyboard執(zhí)行動畫。啟動Storyboard的辦法有兩種:調(diào)用Storyboard類提供的Begin方法來實現(xiàn)在XAML中利用Trigger或DataTrigger來實現(xiàn)。479.3.2WPF動畫計時系統(tǒng)的常用屬性1.故事板和時間線(2)Timeline時間線(Timeline)表示一個總時間段,總時間段由一個或多個子時間段組成,在每條時間線的每個子時間段內(nèi),都可以定義一個動畫。Timeline類是定義動畫計時行為的抽象基類。該抽象類提供了控制動畫播放的屬性,從該類繼承的各種動畫類都可以使用這些屬性。489.3.2WPF動畫計時系統(tǒng)的常用屬性2.常用屬性(1)Duration屬性該屬性是一個TimeSpan類型,表示動畫持續(xù)的時間,在XAML中用“時:分:秒”的形式表示。默認情況下,當時間線到達Duration指定的值時,就會停止播放動畫。當子時間線的長度大于Storyboard時間線本身的長度,當Storyboard停止播放時,它的所有子時間線依然會立即停止播放。499.3.2WPF動畫計時系統(tǒng)的常用屬性2.常用屬性(2)RepeatBehavior屬性該屬性指定時間線播放的重復(fù)行為。默認情況下,重復(fù)次數(shù)為1.0,即播放一次時間線。RepeatBehavior="0:0:10"表示重復(fù)到10s為止;RepeatBehavior="2.5x"表示重復(fù)2.5次;RepeatBehavior="Forever"表示一直重復(fù),直到手動停止或停止計時系統(tǒng)為止。(3)AutoReverse屬性該屬性指定Timeline在每次向前迭代播放結(jié)束后是否繼續(xù)反向迭代播放。509.3.2WPF動畫計時系統(tǒng)的常用屬性2.常用屬性(4)BeginTime屬性該屬性用于指定時間線開始的時間。如果不指定開始時間,開始時間默認為0。對于容器內(nèi)的每條時間線來說,注意其開始時間是相對于父時間線來說的。(5)FillBehavior屬性該屬性表示當Timeline到達活動期的結(jié)尾時,即動畫播放結(jié)束時,是停止動畫播放(FillBehavior="Stop")還是保持動畫結(jié)束時的值(FillBehavior="HoldEnd"),默認值為HoldEnd。519.3.2WPF動畫計時系統(tǒng)的常用屬性2.常用屬性(6)控制時間線速度的屬性Timeline類提供了3個控制時間線速度的屬性?!維peedRatio】屬性:該屬性指定Timeline相對于其父時間線的時間進度速率?!続ccelerationRatio】屬性:該屬性指定動畫期間時間線相對于Duration的加速度,該值必須在0.0和1.0之間。【DecelerationRatio】屬性:該屬性指定動畫期間時間線相對于Duration的減速度,其值必須在0.0和1.0之間??梢酝瑫r使用AccelerationRatio和DecelerationRatio。529.3.3基本動畫基本動畫是一種隨著時間變化自動將元素的某個屬性從起始值逐漸過渡到結(jié)束值的過程?;緞赢嬘挚梢赃M一步細分為本地動畫、時鐘動畫和故事板動畫。1.本地動畫本地動畫是指直接對對象的屬性值進行處理的動畫,這種動畫受計時系統(tǒng)支持,但不能對動畫進行暫停等交互操作。本地動畫只能用C#代碼來實現(xiàn),無法用XAML來描述。539.3.3基本動畫1.本地動畫【例9-4】演示本地動畫的基本用法,將按鈕的寬度和背景色進行動畫處理。549.3.3基本動畫2.時鐘動畫時鐘動畫適用于處理大量類型相同而且需要交互的場合。【例

9-5】演示時鐘動畫的基本用法。559.3.3基本動畫3.故事板動畫WPF提供了兩種故事板:ParallelTimeline和Storyboard,這兩個類都是從Timeline類繼承的。在一個Storyboard中可以包含多個ParallelTimeline,每個ParallelTimeline又可以包含多個TimeLine?;緞赢?、關(guān)鍵幀動畫、路徑動畫都可以用Storyboard來實現(xiàn)。用Storyboard實現(xiàn)動畫時,既可以用C#代碼來編寫,也可以用XAML來描述。569.3.3基本動畫3.故事板動畫一個XAML文件中可以定義多個Storyboard,每個Storyboard都必須指明以下內(nèi)容。

在Storyboard中,用x:Key定義一個關(guān)鍵字,以便讓事件觸發(fā)器知道使用的是哪個故事板。

在動畫中,指明該故事板應(yīng)用的目標對象名(Storyboard.TargetName)和屬性類型(Storyboard.TargetProperty)。用C#代碼實現(xiàn)時,需要創(chuàng)建Storyboard的實例,并通過Storyboard提供的SetTarget靜態(tài)方法指明動畫和目標對象,通過SetTargetProperty靜態(tài)方法指明動畫和附加屬性的類型。579.3.3基本動畫3.故事板動畫【例9-6】演示Storyboard的基本用法。589.3.3基本動畫3.故事板動畫【例9-6】演示Storyboard的基本用法。599.3.3基本動畫3.故事板動畫【例9-6】演示Storyboard的基本用法。609.3.4*關(guān)鍵幀動畫關(guān)鍵幀動畫在基本動畫的基礎(chǔ)上增加了控制動畫變化的關(guān)鍵時間點,此關(guān)鍵時間點稱為關(guān)鍵幀。1.關(guān)鍵幀動畫的分類關(guān)鍵幀動畫本質(zhì)上也是通過修改附加屬性的值來實現(xiàn)動畫效果的。它和基本動畫的區(qū)別是:關(guān)鍵幀動畫可以在每段動畫中同時指定多個關(guān)鍵時間點和關(guān)鍵屬性值,而基本動畫每段最多只能指定兩個值。關(guān)鍵幀動畫類型的命名約定為:<類型>AnimationUsingKeyFrames619.3.4*關(guān)鍵幀動畫1.關(guān)鍵幀動畫的分類在每個關(guān)鍵幀動畫類型的開始標記和結(jié)束標記之間,都可以使用多種內(nèi)插關(guān)鍵幀類型,每個內(nèi)插關(guān)鍵幀都由關(guān)鍵時間和關(guān)鍵值組成。內(nèi)插關(guān)鍵幀類型是利用內(nèi)插方法來實現(xiàn)的,內(nèi)插關(guān)鍵幀類型的命名約定為:<內(nèi)插方法><類型>KeyFrame內(nèi)插方法離散線性樣條629.3.4*關(guān)鍵幀動畫2.關(guān)鍵幀動畫基本用法(1)在關(guān)鍵幀動畫中插入樣條動畫(2)在關(guān)鍵幀動畫中插入緩動函數(shù)定義緩動函數(shù)的辦法是在內(nèi)插關(guān)鍵幀動畫的EasingFunction屬性的開始和結(jié)束標記之間,用EasingMode屬性指定緩動函數(shù)名?!咀詫W(xué)9-1】演示關(guān)鍵幀動畫的基本用法。639.3.5*路徑動畫路徑動畫是指將元素按照某一指定的幾何路徑(PathGeometry對象)進行移動而形成的動畫,也可以邊移動邊旋轉(zhuǎn),從而實現(xiàn)復(fù)雜的變換效果。1.路徑動畫的類型WPF提供的路徑動畫類型:PointAnimationUsingPathDoubleAnimationUsingPath、MatrixAnimationUsingPath。2.使用PathGeometry繪制路徑649.3.5*路徑動畫【自學(xué)9-2】演示路徑標記語法的基本用法。659.4*

動畫變換和特效處理9.4.1*變換和特效9.4.2*動畫與變換綜合示例9.4.1變換和特效WPF提供了非常靈活的變換(Transform)技術(shù),而且這些變換都能在設(shè)計界面中以“所見即所得”的形式立即呈現(xiàn)出來。1.基本概念WPF的二維變換操作由Matrix類來描述,這是一個3行3列的Double值集合,稱為變換矩陣。679.4.1變換和特效1.基本概念利用變換類變換對象的方法是聲明適當?shù)腡ransform類型,并將其應(yīng)用于對象的變換屬性。WPF的基本變換類型68類

型變換屬性brushTransform,RelativeTransformContainerVisualTransformDrawingGroupTransformFrameworkElementRenderTransform,LayoutTransformGeometryTransformTextEffectTransformUIElement

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論