最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

WPF實現(xiàn)動畫效果(七)之演示圖板

 更新時間:2022年06月23日 11:19:14   作者:天方  
這篇文章介紹了WPF實現(xiàn)動畫效果之演示圖板,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

WPF動畫效果系列

WPF實現(xiàn)動畫效果(一)之基本概念

WPF實現(xiàn)動畫效果(二)之From/To/By 動畫

WPF實現(xiàn)動畫效果(三)之時間線(TimeLine)

WPF實現(xiàn)動畫效果(四)之緩動函數(shù)

WPF實現(xiàn)動畫效果(五)之關鍵幀動畫

WPF實現(xiàn)動畫效果(六)之路徑動畫

WPF實現(xiàn)動畫效果(七)之演示圖板

正文

前面所介紹的都是單一的動畫,它只能修改單一屬性。有的時候,我們需要將一組動畫一起進行,對于一個按鈕,我們可能有如下需求:

  • 選擇該按鈕時,該按鈕增大并更改顏色。

  • 單擊該按鈕時,該按鈕縮小并恢復其原始大小。

  • 該按鈕變成禁用時,縮小且不透明度縮減到 50%。

每個操作都同時對應進行著兩個動畫,此時用我們就需要用到TimelineGroup了,前文介紹TimeLine的時候已經介紹過它了,它可以將多個TimeLine封裝成一個統(tǒng)一調度。但TimeLine是一個抽象基類,我們通常使用的是它的子類演示圖板(Storyboard)。

演示圖板(Storyboard) 是一種為其所包含的時間線提供目標信息的容器時間線。 演示圖板可以包含任意類型的 Timeline,包括其他容器時間線和動畫。

    var widthAnimation = new DoubleAnimation() { To = 250, FillBehavior = FillBehavior.Stop };
    var opacityAnimation = new DoubleAnimation() { From = 1, To = 0, FillBehavior = FillBehavior.Stop };

    var storyBoard = new Storyboard() { Duration = TimeSpan.FromSeconds(2) };
    storyBoard.Children.Add(widthAnimation);
    storyBoard.Children.Add(opacityAnimation);

    Storyboard.SetTargetProperty(widthAnimation, new PropertyPath("Width"));
    Storyboard.SetTargetProperty(opacityAnimation, new PropertyPath("Opacity"));

    storyBoard.Begin(button);

這個例子簡單的演示了如何使用StoryBoard,由于Storyboard經常使用與XAML,這里也介紹一下XAML中的寫法:

    <Storyboard x:Key="storyBoard">
        <DoubleAnimation Storyboard.TargetProperty="Width" To="250" FillBehavior="Stop"/>
        <DoubleAnimation Storyboard.TargetProperty="Opacity" From="1" To="0" FillBehavior="Stop"/>
    </Storyboard>

使用方式如下:

    var storyBoard = this.FindResource("storyBoard") as Storyboard;
    storyBoard.Begin();

控制Storyboard

前面已經介紹過,Storyboard 像Clock方法一樣,直接封裝了Begin、 Seek、 Stop、 Pause、Resume、Remove等幾個函數(shù),在代碼中可以直接使用。另外,在XAML中,Storyboard是可以直接在觸發(fā)器中(EventTrigger、DataTrigger、Trigger)使用的,如下就是一個簡單的例子:

    <Window.Resources>
        <Storyboard x:Key="storyBoard">
            <DoubleAnimation Storyboard.TargetName="button" Storyboard.TargetProperty="Width" To="250" FillBehavior="Stop"/>
            <DoubleAnimation Storyboard.TargetName="button" Storyboard.TargetProperty="Opacity" From="1" To="0" FillBehavior="Stop"/>
        </Storyboard>
    </Window.Resources>
    <Window.Triggers>
        <EventTrigger RoutedEvent="Loaded" >
            <BeginStoryboard Storyboard="{StaticResource storyBoard}" />
        </EventTrigger>
    </Window.Triggers>

可以看到,這兒用到了一個系統(tǒng)提供的名為BeginStoryboard的TriggerAction,同樣也提供了SeekStoryboard、 StopStoryboard、 PauseStoryboard、ResumeStoryboard、RemoveStoryboard等幾個TriggerAction。一個稍微復雜點的例子如下:

    <Window.Resources>
        <Storyboard x:Key="storyBoard">
            <DoubleAnimation Storyboard.TargetName="button" Storyboard.TargetProperty="Width" To="250" FillBehavior="Stop"/>
            <DoubleAnimation Storyboard.TargetName="button" Storyboard.TargetProperty="Opacity" From="1" To="0" FillBehavior="Stop"/>
        </Storyboard>
    </Window.Resources>
    <Window.Triggers>
        <EventTrigger RoutedEvent="MouseEnter" >
            <BeginStoryboard Name="storyBegin" Storyboard="{StaticResource storyBoard}" />
        </EventTrigger>
        <EventTrigger RoutedEvent="MouseLeave" >
            <RemoveStoryboard BeginStoryboardName="storyBegin" />
        </EventTrigger>
    </Window.Triggers>

另外,微軟提供的Interaction也能在XAML中執(zhí)行Storyboard的控制:

    <i:Interaction.Triggers>
        <i:EventTrigger EventName="MouseEnter">
            <ei:ControlStoryboardAction Storyboard="{StaticResource storyBoard}" ControlStoryboardOption="Play" />
        </i:EventTrigger>
        <i:EventTrigger EventName="MouseLeave">
            <ei:ControlStoryboardAction Storyboard="{StaticResource storyBoard}" ControlStoryboardOption="Stop" />
        </i:EventTrigger>
    </i:Interaction.Triggers>

由于微軟的Interaction擴展在MVVM模式下非常有用,擴展性也非常好,這種方式很多時候更方便。關于Interaction的使用方式,請參看這篇文章:Interaction triggers in WPF

參考資料:

演示圖板概述

到此這篇關于WPF實現(xiàn)動畫效果之演示圖板的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • c#如何實現(xiàn)程序加密隱藏

    c#如何實現(xiàn)程序加密隱藏

    LiteDB是一個輕量級的嵌入式數(shù)據庫,它是用C#編寫的,適用于.NET平臺,這篇文章主要介紹了如何通過LiteDB將自己的程序進行加密,感興趣的可以了解下
    2023-08-08
  • C# winform操作CSV格式文件

    C# winform操作CSV格式文件

    這篇文章主要為大家詳細介紹了C#在winform中的表格操作CSV格式文件的相關實例,文中的示例代碼講解詳細,感興趣的小伙伴可以參考一下
    2025-03-03
  • C#異步編程詳解

    C#異步編程詳解

    本文主要介紹異步編程中Task、Async和Await的基礎知識。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • 泛型編程去掉字段重復數(shù)據的方法

    泛型編程去掉字段重復數(shù)據的方法

    這篇文章主要介紹了泛型去掉字段重復數(shù)據的方法,大家參考使用吧
    2014-01-01
  • DevExpress根據條件設置GridControl RepositoryItem是否可編輯

    DevExpress根據條件設置GridControl RepositoryItem是否可編輯

    這篇文章主要介紹了DevExpress根據條件設置GridControl RepositoryItem是否可編輯,需要的朋友可以參考下
    2014-08-08
  • C# Newtonsoft.Json用法詳解

    C# Newtonsoft.Json用法詳解

    本文主要介紹了C# Newtonsoft.Json用法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • Unity3D動態(tài)對象優(yōu)化代碼分享

    Unity3D動態(tài)對象優(yōu)化代碼分享

    這篇文章主要介紹了Unity3D動態(tài)對象優(yōu)化代碼分享的相關資料,需要的朋友可以參考下
    2015-03-03
  • WPF實現(xiàn)類似ChatGPT逐字打印效果的示例代碼

    WPF實現(xiàn)類似ChatGPT逐字打印效果的示例代碼

    前一段時間ChatGPT類的應用十分火爆,這類應用在回答用戶的問題時逐字打印輸出,像極了真人打字回復消息,本文就來利用WPF模擬一下這種逐字打印的效果吧
    2023-08-08
  • C#?Winform實現(xiàn)進度條顯示

    C#?Winform實現(xiàn)進度條顯示

    這篇文章主要為大家詳細介紹了C#?Winform實現(xiàn)進度條顯示,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • 將excel數(shù)據轉換成dataset示例

    將excel數(shù)據轉換成dataset示例

    這篇文章主要介紹了不借助第三方插件的情況下將Excel中的數(shù)據轉換成DataSet的方法,需要的朋友可以參考下
    2014-02-02

最新評論

漳州市| 东平县| 留坝县| 淳化县| 临桂县| 弥勒县| 濮阳市| 包头市| 股票| 辽宁省| 灵武市| 鹿邑县| 平乐县| 民乐县| 柘城县| 西峡县| 儋州市| 图木舒克市| 固阳县| 宣恩县| 新乡县| 栾城县| 临湘市| 屏东市| 如东县| 边坝县| 孝感市| 南昌市| 冀州市| 丰都县| 岑溪市| 白城市| 道孚县| 儋州市| 甘泉县| 木兰县| 三穗县| 阿城市| 奎屯市| 鄄城县| 故城县|