




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第9章樣式與動(dòng)畫2Ch9樣式與動(dòng)畫9.1資源與樣式控制9.2控件模板與觸發(fā)器9.3WPF動(dòng)畫設(shè)計(jì)基礎(chǔ)9.4*動(dòng)畫變換和特效處理9.1資源與樣式控制9.1.1WPF項(xiàng)目中的文件屬性9.1.2XAML資源9.1.3Style元素9.1.4樣式的級(jí)聯(lián)控制和資源字典49.1資源與樣式控制在WPF應(yīng)用程序中,資源是指項(xiàng)目中可以和C#代碼分離的固定不變的信息。資源文件是指不能直接執(zhí)行的文件。例如,圖像、字符串、圖標(biāo)、聲音、視頻、XAML文件等。資源文件的保存形式,則由其所在文件的【生成操作】屬性來決定。WPF應(yīng)用程序是利用資源對(duì)樣式和主題進(jìn)行控制的。59.1.1WPF項(xiàng)目中的文件屬性文件屬性表示了編譯整個(gè)項(xiàng)目以及將文件添加到項(xiàng)目中時(shí)處理該文件的方式。一般在【解決方案資源管理器】中選中某個(gè)文件,然后通過【屬性】窗口查看或更改該文件的屬性。在更改文件的生成類型后,必須選擇【重新生成】項(xiàng)目,才會(huì)應(yīng)用這些更改。如果只選擇【生成】項(xiàng)目,則不會(huì)應(yīng)用更改。69.1.1WPF項(xiàng)目中的文件屬性WPF應(yīng)用程序項(xiàng)目中文件的屬性1.復(fù)制到輸出目錄不復(fù)制:指編譯項(xiàng)目時(shí),不將該文件復(fù)制到輸出目錄。始終復(fù)制:指每次編譯項(xiàng)目時(shí),都將該文件復(fù)制到輸出目錄下。如果較新則復(fù)制:指每次編譯項(xiàng)目時(shí),如果項(xiàng)目下的文件比輸出目錄下的文件新,則將項(xiàng)目下的文件復(fù)制到輸出目錄。79.1.1WPF項(xiàng)目中的文件屬性2.生成操作生成操作含
義無不進(jìn)行任何操作編譯將該文件編譯到擴(kuò)展名為.exe的可執(zhí)行文件中,如果是庫(kù)項(xiàng)目,則編譯到擴(kuò)展名為.dll的文件中內(nèi)容表示將文件添加到項(xiàng)目中時(shí),生成操作將該文件轉(zhuǎn)換為內(nèi)容(Content),可以利用自定義工具對(duì)文件進(jìn)行轉(zhuǎn)換處理。編譯項(xiàng)目時(shí),該文件不編譯到程序集中,而是隨項(xiàng)目單獨(dú)保存嵌入的資源指包含在Properties文件夾下的Resources.resx文件中的資源。編譯項(xiàng)目時(shí),Resources.resx文件會(huì)自動(dòng)被包含到生成的.exe或者.dll文件中Resource表示文件以單獨(dú)的形式保存在項(xiàng)目中,與其對(duì)應(yīng)的.resx文件只保存這些文件的鏈接。編譯項(xiàng)目時(shí),再將這些文件嵌入到程序集中,即編譯到.exe或者.dll文件中ApplicationDefinition表示該文件是應(yīng)用程序的定義文件Page表示這些文件為XAML資源文件。編譯【生成操作】屬性為Page的文件時(shí),這些文件將被轉(zhuǎn)換為二進(jìn)制格式編譯到程序集中,即編譯到.exe或者.dll文件中SplashScreen表示該文件是初始屏幕使用的圖像文件89.1.1WPF項(xiàng)目中的文件屬性3.嵌入的資源嵌入的資源是指包含在Properties文件夾下的Resources.resx文件中的資源。一旦將某個(gè)文件作為嵌入的資源,系統(tǒng)即自動(dòng)將其轉(zhuǎn)換為強(qiáng)類型的對(duì)象,然后以二進(jìn)制形式嵌入到Properties文件夾下的Resource.resx文件中。嵌入后無法再修改原始文件的內(nèi)容。99.1.1WPF項(xiàng)目中的文件屬性3.嵌入的資源在多個(gè)項(xiàng)目之間共享的資源文件,例如,包含公司徽標(biāo)、商標(biāo)信息等文件,可使用嵌入的資源。優(yōu)點(diǎn):將這些文件作為嵌入的資源后,只需要將Resource.resx文件復(fù)制到其他項(xiàng)目中即可,而不需要復(fù)制關(guān)聯(lián)的資源數(shù)據(jù)文件;缺點(diǎn):無法修改資源文件的內(nèi)容。將字符串(不是指文本文件)按資源來處理時(shí),必須將其作為嵌入的資源。109.1.1WPF項(xiàng)目中的文件屬性4.鏈接的資源鏈接的資源是指將文件添加到項(xiàng)目中時(shí),在對(duì)應(yīng)的擴(kuò)展名為.resx的文件中只保存這些文件的相對(duì)路徑或鏈接,而被鏈接的這些文件仍然單獨(dú)存儲(chǔ),而且可編輯。注意這里所說的“擴(kuò)展名為.resx的文件”不是指Properties文件夾下的Resource.resx文件,而是指單獨(dú)添加到項(xiàng)目中的擴(kuò)展名為.resx的文件。圖像文件、圖標(biāo)文件、音頻文件、視頻文件、文本文件以及其他類型的文件都可以作為鏈接的資源。119.1.1WPF項(xiàng)目中的文件屬性5.內(nèi)容文件內(nèi)容文件是指沒有被編譯到程序集內(nèi)的文件,這些文件以單獨(dú)的文件形式與項(xiàng)目一起發(fā)布。6.SplashScreenSplashScreen(初始屏幕)是指將某個(gè)圖像文件作為程序啟動(dòng)時(shí),在顯示主窗口之前顯示的屏幕界面。通常由一幅圖像和一種背景色組成。使用初始屏幕的目的是為了讓用戶能看出程序正在加載。129.1.2XAML資源XAML資源是指用XAML描述的在應(yīng)用程序中的不同位置可以重用的對(duì)象。例如,樣式(Style)、畫筆(Brush)等都是XAML資源。注意XAML資源和擴(kuò)展名為.resx的資源文件不是一個(gè)概念。XAML資源的擴(kuò)展名是.xaml而不是.resx,這些文件的【生成操作】屬性都是Page,而且這些文件都會(huì)被編譯到程序集中。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)資源和動(dòng)態(tài)資源靜態(tài)資源(StaticResource)是指編譯時(shí)就已經(jīng)對(duì)其進(jìn)行索引的資源,一旦定義了這些資源,就無法通過C#代碼修改資源的內(nèi)容。用{StaticResourcekeyName}標(biāo)記擴(kuò)展引用靜態(tài)資源。執(zhí)行速度快,但無法動(dòng)態(tài)改變動(dòng)態(tài)資源(DynamicResource)是指臨時(shí)定義的資源,這些資源的內(nèi)容可以通過C#代碼隨時(shí)修改。用{DynamicResourcekeyName}標(biāo)記擴(kuò)展引用動(dòng)態(tài)資源??梢詣?dòng)態(tài)改變,但執(zhí)行速度慢159.1.3Style元素WPF應(yīng)用程序中的樣式是利用XAML資源來實(shí)現(xiàn)的。即在XAML資源中用Style元素聲明樣式和模板,并在控件中引用它。Style元素的常用形式為<Stylex:Key=鍵值TargetType="控件類型"BasedOn="其他樣式中定義的鍵值">
……</Style>169.1.3Style元素(1)隱式樣式設(shè)置(只聲明TargetType)在Style元素的開始標(biāo)記內(nèi),可以只聲明TargetType而不聲明x:Key,此時(shí)x:Key的值將隱式設(shè)置為和TargetType的值相同,該樣式對(duì)其控制范圍內(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的值時(shí)才會(huì)起作用。<Stylex:Key="Style1"><SetterProperty="Control.Foreground"Value="Green"/><SetterProperty="Control.Background"Value="Yellow"/></Style>189.1.3Style元素(3)同時(shí)聲明x:Key和TargetType如果同時(shí)聲明x:Key和TargetType,則只有引用了x:Key的值且控件類型為TargetType中指定的類型的控件才會(huì)起作用,而且引用了顯式樣式的控件將不再應(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>之間,既可以用特性語(yǔ)法聲明一個(gè)或多個(gè)Setter對(duì)象,也可以用屬性語(yǔ)法設(shè)置屬性的值。(1)用特性語(yǔ)法定義用特性語(yǔ)法定義Setter時(shí),每個(gè)Setter都必須包括Property屬性和Value屬性。例如:<SetterProperty="FontSize"Value="32pt"/>如果存在多個(gè)Setter具有相同的Property,則最后的Setter中的Property有效。219.1.3Style元素(2)用屬性語(yǔ)法定義當(dāng)某些屬性無法用特性語(yǔ)法來描述時(shí),也可以用屬性語(yǔ)法來實(shí)現(xiàn),此時(shí)在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樣式的級(jí)聯(lián)控制和資源字典1.樣式的級(jí)聯(lián)控制根據(jù)XAML資源聲明的位置,可將樣式定義分為不同的級(jí)別。(1)內(nèi)聯(lián)式內(nèi)聯(lián)式是指在元素的開始標(biāo)記內(nèi)直接用特性語(yǔ)法聲明元素的樣式。<TextBlockFontSize="24"FontFamily="楷體">文本</TextBlock>內(nèi)聯(lián)式適用于單獨(dú)控制元素樣式的情況。優(yōu)點(diǎn):設(shè)置樣式直觀、方便;缺點(diǎn):無法一次性設(shè)置所有窗口或頁(yè)面中相同的樣式。249.1.4樣式的級(jí)聯(lián)控制和資源字典1.樣式的級(jí)聯(lián)控制(2)框架元素樣式框架元素是指從FrameworkElement或FrameworkContentElement繼承的元素,根元素(Window、Page、UserControl等)只是一種特殊的框架元素??蚣茉貥邮绞侵冈诳蚣茉兀òǜ兀┑腞esource屬性中定義的樣式,這種樣式的作用范圍為該元素的所有子元素。259.1.4樣式的級(jí)聯(lián)控制和資源字典1.樣式的級(jí)聯(lián)控制(3)應(yīng)用程序樣式應(yīng)用程序樣式是指在App.xaml文件的Application.Resources屬性中聲明的樣式。這種樣式的作用范圍為整個(gè)應(yīng)用程序項(xiàng)目,對(duì)項(xiàng)目中的所有窗口或頁(yè)面都起作用。269.1.4樣式的級(jí)聯(lián)控制和資源字典2.資源字典資源字典是指在單獨(dú)的XAML文件中定義的樣式。在元素樣式、應(yīng)用程序樣式中都可以引用資源字典。例如:<Style><Style.Resources><ResourceDictionarySource="Dictionary1.xaml"/></Style.Resources></Style>還可以在一個(gè)資源字典中合并其他的資源字典。279.1.4樣式的級(jí)聯(lián)控制和資源字典3.使用C#代碼定義和引用樣式可以在ResourceDictionary對(duì)象進(jìn)行代碼訪問。ResourceDictionaryd1=border1.Resources;d1.Add("backgroundKey",Brushes.Blue);通過對(duì)象的Resources[“key”]直接訪問某個(gè)XAML資源。使用FindResource(key)方法和TryFindResource(key)方法來搜索XAML資源。Brushb1=(Brush)border1.TryFindResource("backgroundKey");也可以從資源集合中獲取定義的樣式,然后將其分配給元素的Style屬性。textblock1.Style=(Style)(this.Resources["TitleText"]);289.1.4樣式的級(jí)聯(lián)控制和資源字典【例9-1】演示樣式的級(jí)聯(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ā)生變化時(shí)自動(dòng)觸發(fā)某些動(dòng)作。在<Style>和</Style>之間,可以利用樣式設(shè)置觸發(fā)器。1.屬性觸發(fā)器屬性觸發(fā)器是指用控件的屬性作為觸發(fā)條件。即當(dāng)對(duì)象的屬性發(fā)生變化時(shí)自動(dòng)更改對(duì)應(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ā)條件,即當(dāng)引發(fā)指定的路由事件時(shí)啟動(dòng)一組操作,例如,動(dòng)畫等。3.?dāng)?shù)據(jù)觸發(fā)器數(shù)據(jù)觸發(fā)器是利用控件的DataContext來觸發(fā)的。(1)DataTriggerDataTrigger用控件的DataContext的單個(gè)屬性作為觸發(fā)條件。(2)MultiDataTriggerMultiDataTrigger用控件的DataContext的多個(gè)屬性作為觸發(fā)條件。359.2.2觸發(fā)器【例9-3】演示觸發(fā)器的基本用法。369.2.3主題主題(Themes)也叫外觀,是在系統(tǒng)或應(yīng)用程序級(jí)別上定義的一組資源。利用主題,可以一次性指定項(xiàng)目?jī)?nèi)所有元素的默認(rèn)樣式,為應(yīng)用程序的控件和其他可視元素提供默認(rèn)的外觀。WPF應(yīng)用程序中,主題是通過資源字典來實(shí)現(xiàn)的。對(duì)于應(yīng)用程序開發(fā)人員來說,既可以引用系統(tǒng)主題,也可以自定義主題。379.2.3主題1.系統(tǒng)主題系統(tǒng)主題是指操作系統(tǒng)提供的主題,這些主題都保存在對(duì)應(yīng)的.dll文件中。如果不指定系統(tǒng)主題,WPF會(huì)使用安裝操作系統(tǒng)時(shí)默認(rèn)選擇的主題。2.自定義主題Wpfz項(xiàng)目中包含了自定義主題的代碼,并在ExampleWpfApp項(xiàng)目中引用了Wpfz項(xiàng)目中自定義的主題。389.2.3主題3.如何使用主題(1)添加引用。鼠標(biāo)右擊項(xiàng)目的【引用】,選擇【添加引用】命令,在彈出的窗口中,勾選要引用的dll文件。(2)鼠標(biāo)單擊已經(jīng)引用的dll文件,將其【復(fù)制本地】屬性改為True。注意這一步不能省略,否則將無法找到對(duì)應(yīng)的主題文件。(3)將使用的主題合并到App.xaml的資源字典中,以便在整個(gè)項(xiàng)目中都能使用它。399.3WPF動(dòng)畫設(shè)計(jì)基礎(chǔ)9.3.1WPF動(dòng)畫計(jì)時(shí)系統(tǒng)及其分類9.3.2WPF動(dòng)畫計(jì)時(shí)系統(tǒng)的常用屬性9.3.3基本動(dòng)畫9.3.4*關(guān)鍵幀動(dòng)畫9.3.5*路徑動(dòng)畫9.3.1WPF動(dòng)畫計(jì)時(shí)系統(tǒng)及其分類WPF內(nèi)部實(shí)現(xiàn)了一套高效的動(dòng)畫計(jì)時(shí)系統(tǒng),開發(fā)人員可利用它直接對(duì)控件的附加屬性值進(jìn)行動(dòng)畫處理。1.基本概念WPF提供了的動(dòng)畫類型都在System.Windows.Media.Animation命名空間下。在WPF應(yīng)用程序中,建議盡量使用WPF動(dòng)畫計(jì)時(shí)系統(tǒng)。419.3.1WPF動(dòng)畫計(jì)時(shí)系統(tǒng)及其分類2.WPF動(dòng)畫計(jì)時(shí)系統(tǒng)的分類WPF動(dòng)畫計(jì)時(shí)系統(tǒng)分為基本動(dòng)畫、關(guān)鍵幀動(dòng)畫和路徑動(dòng)畫。(1)基本動(dòng)畫(From/To/By)基本動(dòng)畫是用From/To或者From/By來實(shí)現(xiàn)的。完成過渡所需的時(shí)間由Duration屬性來確定?;緞?dòng)畫可控制多種類型,這些動(dòng)畫類的后綴都帶Animation。<類型>AnimationByte、Int16、Int32、Int64、Single、Double、Decimal、Color、Point、Size、Thickness、Rect、Vector、Vector3D、Quaternion、Rotation3D429.3.1WPF動(dòng)畫計(jì)時(shí)系統(tǒng)及其分類(1)基本動(dòng)畫(From/To/By)常用的基本動(dòng)畫類有DoubleAnimation、ColorAnimation和PointAnimation。DoubleAnimation適用于對(duì)Rectangle、Button、Label等控件的寬度、高度、不透明度等Double類型的附加屬性進(jìn)行動(dòng)畫處理,如滑動(dòng)效果、拉簾效果、漸入漸出效果等。ColorAnimation適用于對(duì)顏色(前景色、背景色、填充色等)進(jìn)行漸變動(dòng)畫處理。PointAnimation適用于對(duì)位置進(jìn)行動(dòng)畫處理。439.3.1WPF動(dòng)畫計(jì)時(shí)系統(tǒng)及其分類(1)基本動(dòng)畫(From/To/By)基本動(dòng)畫只需要在相鄰的兩個(gè)時(shí)間點(diǎn)分別設(shè)置控件的屬性起始值和結(jié)束值。如果同時(shí)指定From、By和To,則忽略By的值。從是否可交互以及受支持的程度來看,又可以將基本動(dòng)畫(From/To/By)進(jìn)一步細(xì)分為:本地動(dòng)畫、時(shí)鐘動(dòng)畫、故事板動(dòng)畫。本地動(dòng)畫一般用于不需要用戶參與交互操作的情況。如果希望通過界面讓用戶參與交互操作,此時(shí)可以用時(shí)鐘動(dòng)畫或者故事板動(dòng)畫(Storyboard)來實(shí)現(xiàn)。故事板動(dòng)畫支持XAML,應(yīng)用范圍更廣,可適用于任何應(yīng)用場(chǎng)合。449.3.1WPF動(dòng)畫計(jì)時(shí)系統(tǒng)及其分類(2)關(guān)鍵幀動(dòng)畫關(guān)鍵幀動(dòng)畫在基本動(dòng)畫的基礎(chǔ)上增加了控制動(dòng)畫變化的關(guān)鍵幀。包含多條“并行執(zhí)行”的時(shí)間線(一個(gè)屬性對(duì)應(yīng)一條時(shí)間線),每條時(shí)間線上都可以指定多個(gè)關(guān)鍵時(shí)間點(diǎn),控件或元素的附加屬性值在這些關(guān)鍵時(shí)間點(diǎn)上使用內(nèi)插算法實(shí)現(xiàn)每一對(duì)兩兩相鄰的關(guān)鍵幀之間逐漸過渡。(3)路徑動(dòng)畫路徑動(dòng)畫在關(guān)鍵幀動(dòng)畫的基礎(chǔ)上又增加了路徑規(guī)劃功能。包含多條并行執(zhí)行的時(shí)間線,但是每條時(shí)間線上關(guān)鍵時(shí)間點(diǎn)上屬性的值是通過事先規(guī)劃的路徑計(jì)算出來的。459.3.2WPF動(dòng)畫計(jì)時(shí)系統(tǒng)的常用屬性1.故事板和時(shí)間線在WPF動(dòng)畫計(jì)時(shí)系統(tǒng)中,基本動(dòng)畫、關(guān)鍵幀動(dòng)畫以及路徑動(dòng)畫都是基于故事板(Storyboard類)來實(shí)現(xiàn)的。(1)StoryboardStoryboard是一組時(shí)間線的容器,它由一條總時(shí)間線控制,在它包含的所有時(shí)間線上定義的動(dòng)畫都可以并行執(zhí)行,而且還可以通過該容器整體控制動(dòng)畫的啟動(dòng)、暫停、繼續(xù)、停止等交互操作。469.3.2WPF動(dòng)畫計(jì)時(shí)系統(tǒng)的常用屬性1.故事板和時(shí)間線(1)Storyboard使用Storyboard進(jìn)行動(dòng)畫處理需要完成下面的步驟。
聲明一個(gè)Storyboard以及一個(gè)或多個(gè)動(dòng)畫。
使用TargetName和TargetProperty附加屬性指定每個(gè)動(dòng)畫的目標(biāo)對(duì)象和屬性。
啟動(dòng)Storyboard執(zhí)行動(dòng)畫。啟動(dòng)Storyboard的辦法有兩種:調(diào)用Storyboard類提供的Begin方法來實(shí)現(xiàn)在XAML中利用Trigger或DataTrigger來實(shí)現(xiàn)。479.3.2WPF動(dòng)畫計(jì)時(shí)系統(tǒng)的常用屬性1.故事板和時(shí)間線(2)Timeline時(shí)間線(Timeline)表示一個(gè)總時(shí)間段,總時(shí)間段由一個(gè)或多個(gè)子時(shí)間段組成,在每條時(shí)間線的每個(gè)子時(shí)間段內(nèi),都可以定義一個(gè)動(dòng)畫。Timeline類是定義動(dòng)畫計(jì)時(shí)行為的抽象基類。該抽象類提供了控制動(dòng)畫播放的屬性,從該類繼承的各種動(dòng)畫類都可以使用這些屬性。489.3.2WPF動(dòng)畫計(jì)時(shí)系統(tǒng)的常用屬性2.常用屬性(1)Duration屬性該屬性是一個(gè)TimeSpan類型,表示動(dòng)畫持續(xù)的時(shí)間,在XAML中用“時(shí):分:秒”的形式表示。默認(rèn)情況下,當(dāng)時(shí)間線到達(dá)Duration指定的值時(shí),就會(huì)停止播放動(dòng)畫。當(dāng)子時(shí)間線的長(zhǎng)度大于Storyboard時(shí)間線本身的長(zhǎng)度,當(dāng)Storyboard停止播放時(shí),它的所有子時(shí)間線依然會(huì)立即停止播放。499.3.2WPF動(dòng)畫計(jì)時(shí)系統(tǒng)的常用屬性2.常用屬性(2)RepeatBehavior屬性該屬性指定時(shí)間線播放的重復(fù)行為。默認(rèn)情況下,重復(fù)次數(shù)為1.0,即播放一次時(shí)間線。RepeatBehavior="0:0:10"表示重復(fù)到10s為止;RepeatBehavior="2.5x"表示重復(fù)2.5次;RepeatBehavior="Forever"表示一直重復(fù),直到手動(dòng)停止或停止計(jì)時(shí)系統(tǒng)為止。(3)AutoReverse屬性該屬性指定Timeline在每次向前迭代播放結(jié)束后是否繼續(xù)反向迭代播放。509.3.2WPF動(dòng)畫計(jì)時(shí)系統(tǒng)的常用屬性2.常用屬性(4)BeginTime屬性該屬性用于指定時(shí)間線開始的時(shí)間。如果不指定開始時(shí)間,開始時(shí)間默認(rèn)為0。對(duì)于容器內(nèi)的每條時(shí)間線來說,注意其開始時(shí)間是相對(duì)于父時(shí)間線來說的。(5)FillBehavior屬性該屬性表示當(dāng)Timeline到達(dá)活動(dòng)期的結(jié)尾時(shí),即動(dòng)畫播放結(jié)束時(shí),是停止動(dòng)畫播放(FillBehavior="Stop")還是保持動(dòng)畫結(jié)束時(shí)的值(FillBehavior="HoldEnd"),默認(rèn)值為HoldEnd。519.3.2WPF動(dòng)畫計(jì)時(shí)系統(tǒng)的常用屬性2.常用屬性(6)控制時(shí)間線速度的屬性Timeline類提供了3個(gè)控制時(shí)間線速度的屬性。【SpeedRatio】屬性:該屬性指定Timeline相對(duì)于其父時(shí)間線的時(shí)間進(jìn)度速率。【AccelerationRatio】屬性:該屬性指定動(dòng)畫期間時(shí)間線相對(duì)于Duration的加速度,該值必須在0.0和1.0之間?!綝ecelerationRatio】屬性:該屬性指定動(dòng)畫期間時(shí)間線相對(duì)于Duration的減速度,其值必須在0.0和1.0之間??梢酝瑫r(shí)使用AccelerationRatio和DecelerationRatio。529.3.3基本動(dòng)畫基本動(dòng)畫是一種隨著時(shí)間變化自動(dòng)將元素的某個(gè)屬性從起始值逐漸過渡到結(jié)束值的過程?;緞?dòng)畫又可以進(jìn)一步細(xì)分為本地動(dòng)畫、時(shí)鐘動(dòng)畫和故事板動(dòng)畫。1.本地動(dòng)畫本地動(dòng)畫是指直接對(duì)對(duì)象的屬性值進(jìn)行處理的動(dòng)畫,這種動(dòng)畫受計(jì)時(shí)系統(tǒng)支持,但不能對(duì)動(dòng)畫進(jìn)行暫停等交互操作。本地動(dòng)畫只能用C#代碼來實(shí)現(xiàn),無法用XAML來描述。539.3.3基本動(dòng)畫1.本地動(dòng)畫【例9-4】演示本地動(dòng)畫的基本用法,將按鈕的寬度和背景色進(jìn)行動(dòng)畫處理。549.3.3基本動(dòng)畫2.時(shí)鐘動(dòng)畫時(shí)鐘動(dòng)畫適用于處理大量類型相同而且需要交互的場(chǎng)合?!纠?/p>
9-5】演示時(shí)鐘動(dòng)畫的基本用法。559.3.3基本動(dòng)畫3.故事板動(dòng)畫WPF提供了兩種故事板:ParallelTimeline和Storyboard,這兩個(gè)類都是從Timeline類繼承的。在一個(gè)Storyboard中可以包含多個(gè)ParallelTimeline,每個(gè)ParallelTimeline又可以包含多個(gè)TimeLine?;緞?dòng)畫、關(guān)鍵幀動(dòng)畫、路徑動(dòng)畫都可以用Storyboard來實(shí)現(xiàn)。用Storyboard實(shí)現(xiàn)動(dòng)畫時(shí),既可以用C#代碼來編寫,也可以用XAML來描述。569.3.3基本動(dòng)畫3.故事板動(dòng)畫一個(gè)XAML文件中可以定義多個(gè)Storyboard,每個(gè)Storyboard都必須指明以下內(nèi)容。
在Storyboard中,用x:Key定義一個(gè)關(guān)鍵字,以便讓事件觸發(fā)器知道使用的是哪個(gè)故事板。
在動(dòng)畫中,指明該故事板應(yīng)用的目標(biāo)對(duì)象名(Storyboard.TargetName)和屬性類型(Storyboard.TargetProperty)。用C#代碼實(shí)現(xiàn)時(shí),需要?jiǎng)?chuàng)建Storyboard的實(shí)例,并通過Storyboard提供的SetTarget靜態(tài)方法指明動(dòng)畫和目標(biāo)對(duì)象,通過SetTargetProperty靜態(tài)方法指明動(dòng)畫和附加屬性的類型。579.3.3基本動(dòng)畫3.故事板動(dòng)畫【例9-6】演示Storyboard的基本用法。589.3.3基本動(dòng)畫3.故事板動(dòng)畫【例9-6】演示Storyboard的基本用法。599.3.3基本動(dòng)畫3.故事板動(dòng)畫【例9-6】演示Storyboard的基本用法。609.3.4*關(guān)鍵幀動(dòng)畫關(guān)鍵幀動(dòng)畫在基本動(dòng)畫的基礎(chǔ)上增加了控制動(dòng)畫變化的關(guān)鍵時(shí)間點(diǎn),此關(guān)鍵時(shí)間點(diǎn)稱為關(guān)鍵幀。1.關(guān)鍵幀動(dòng)畫的分類關(guān)鍵幀動(dòng)畫本質(zhì)上也是通過修改附加屬性的值來實(shí)現(xiàn)動(dòng)畫效果的。它和基本動(dòng)畫的區(qū)別是:關(guān)鍵幀動(dòng)畫可以在每段動(dòng)畫中同時(shí)指定多個(gè)關(guān)鍵時(shí)間點(diǎn)和關(guān)鍵屬性值,而基本動(dòng)畫每段最多只能指定兩個(gè)值。關(guān)鍵幀動(dòng)畫類型的命名約定為:<類型>AnimationUsingKeyFrames619.3.4*關(guān)鍵幀動(dòng)畫1.關(guān)鍵幀動(dòng)畫的分類在每個(gè)關(guān)鍵幀動(dòng)畫類型的開始標(biāo)記和結(jié)束標(biāo)記之間,都可以使用多種內(nèi)插關(guān)鍵幀類型,每個(gè)內(nèi)插關(guān)鍵幀都由關(guān)鍵時(shí)間和關(guān)鍵值組成。內(nèi)插關(guān)鍵幀類型是利用內(nèi)插方法來實(shí)現(xiàn)的,內(nèi)插關(guān)鍵幀類型的命名約定為:<內(nèi)插方法><類型>KeyFrame內(nèi)插方法離散線性樣條629.3.4*關(guān)鍵幀動(dòng)畫2.關(guān)鍵幀動(dòng)畫基本用法(1)在關(guān)鍵幀動(dòng)畫中插入樣條動(dòng)畫(2)在關(guān)鍵幀動(dòng)畫中插入緩動(dòng)函數(shù)定義緩動(dòng)函數(shù)的辦法是在內(nèi)插關(guān)鍵幀動(dòng)畫的EasingFunction屬性的開始和結(jié)束標(biāo)記之間,用EasingMode屬性指定緩動(dòng)函數(shù)名。【自學(xué)9-1】演示關(guān)鍵幀動(dòng)畫的基本用法。639.3.5*路徑動(dòng)畫路徑動(dòng)畫是指將元素按照某一指定的幾何路徑(PathGeometry對(duì)象)進(jìn)行移動(dòng)而形成的動(dòng)畫,也可以邊移動(dòng)邊旋轉(zhuǎn),從而實(shí)現(xiàn)復(fù)雜的變換效果。1.路徑動(dòng)畫的類型WPF提供的路徑動(dòng)畫類型:PointAnimationUsingPathDoubleAnimationUsingPath、MatrixAnimationUsingPath。2.使用PathGeometry繪制路徑649.3.5*路徑動(dòng)畫【自學(xué)9-2】演示路徑標(biāo)記語(yǔ)法的基本用法。659.4*
動(dòng)畫變換和特效處理9.4.1*變換和特效9.4.2*動(dòng)畫與變換綜合示例9.4.1變換和特效WPF提供了非常靈活的變換(Transform)技術(shù),而且這些變換都能在設(shè)計(jì)界面中以“所見即所得”的形式立即呈現(xiàn)出來。1.基本概念WPF的二維變換操作由Matrix類來描述,這是一個(gè)3行3列的Double值集合,稱為變換矩陣。679.4.1變換和特效1.基本概念利用變換類變換對(duì)象的方法是聲明適當(dāng)?shù)腡ransform類型,并將其應(yīng)用于對(duì)象的變換屬性。WPF的基本變換類型68類
型變換屬性brushTransform,RelativeTransformContainerVisualTransformDrawingGroupTransformFrameworkElementRenderTransform,LayoutTransformGeometryTransformTextEffectTransformUIElement
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子商務(wù)會(huì)員體系考題試題及答案
- 2024年人力資源管理師考試心路歷程與試題及答案
- 提升答題技巧的監(jiān)理試題及答案
- 消防設(shè)施操作員課程復(fù)習(xí)試題及答案
- 寵物家屬的心理需求分析試題及答案
- 電子商務(wù)營(yíng)銷渠道的多樣化考查試題及答案
- 2024年十一月戰(zhàn)場(chǎng)江南
- 石油煉制加熱爐操作規(guī)范
- 信息化物流安全管理探討及試題及答案
- 2024年人力資源管理師考試學(xué)習(xí)資源聚合試題及答案
- 【MOOC】智慧的秘密-重慶大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 【MOOC】金融工程-廈門大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 《人力資源管理》大學(xué)期末測(cè)試題庫(kù)500題(含答案)
- CQI-9 第四版 熱處理系統(tǒng)審核表中文完整版-
- 2024-2025學(xué)年七年級(jí)語(yǔ)文上冊(cè)專項(xiàng)復(fù)習(xí):詞語(yǔ)理解(原卷版+答案)
- 《農(nóng)村中小學(xué)音樂教學(xué)現(xiàn)狀與對(duì)策研究》課題開題報(bào)告
- CQI-23模塑系統(tǒng)評(píng)估審核表-中英文
- 23-24學(xué)期藝體聽力 2學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 高值醫(yī)用耗材自查報(bào)告
- 英國(guó)海德公園
- 1《氓》公開課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì)統(tǒng)編版高中語(yǔ)文選擇性必修上冊(cè)
評(píng)論
0/150
提交評(píng)論