欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

WPF動畫效果系列

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

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

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

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

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

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

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

正文

路徑動畫是一種專門用于將對象按照指定的Path移動的動畫,雖然我們也可以通過控制動畫的旋轉(zhuǎn)和偏移實現(xiàn)對象的移動,但路徑動畫更專業(yè),它的實現(xiàn)更加簡潔明了。

路徑動畫中最常用的是MatrixAnimationUsingPath,它通常用于控制對象的MatrixTransform,一個簡單的例子如下: 

    <Canvas >
        <Canvas.Resources>
            <PathGeometry x:Key="path" Figures="M 10,100 C 35,0 135,0 160,100 180,190 285,200 310,100" />
            <Storyboard x:Key="pathStoryboard" >
                <MatrixAnimationUsingPath PathGeometry="{StaticResource path}"
                                          Storyboard.TargetName="ButtonMatrixTransform"
                                          Storyboard.TargetProperty="Matrix"
                                          DoesRotateWithTangent="True"
                                          Duration="0:0:5" RepeatBehavior="Forever" >
                </MatrixAnimationUsingPath>
            </Storyboard>
        </Canvas.Resources>

        <Canvas.Triggers>
            <EventTrigger RoutedEvent="Control.Loaded">
                <BeginStoryboard Storyboard="{StaticResource pathStoryboard}" />
            </EventTrigger>
        </Canvas.Triggers>

        <Path Data="{StaticResource path}" Stroke="Black" StrokeThickness="1" />

        <Button Width="50" Height="20" >
            <Button.RenderTransform>
                <MatrixTransform x:Name="ButtonMatrixTransform" />
            </Button.RenderTransform>
        </Button>
    </Canvas>

注意這兒有一個DoesRotateWithTangent的屬性,設(shè)置上它后,對象在移動的過程中還能根據(jù)路徑的坡度旋轉(zhuǎn),非常有用。

除了MatrixAnimationUsingPath外,另外還有兩種路徑動畫:PointAnimationUsingPath和DoubleAnimationUsingPath。PointAnimationUsingPath用于靠中心點確定位置的形狀,

    <Canvas >
        <Canvas.Resources>
            <PathGeometry x:Key="path" Figures="M 10,100 C 35,0 135,0 160,100 180,190 285,200 310,100" />
            <Storyboard x:Key="pathStoryboard" >
                <PointAnimationUsingPath PathGeometry="{StaticResource path}"
                                          Storyboard.TargetName="ellipse"
                                          Storyboard.TargetProperty="Center"
                                          Duration="0:0:5" RepeatBehavior="Forever" >
                </PointAnimationUsingPath>
            </Storyboard>
        </Canvas.Resources>

        <Canvas.Triggers>
            <EventTrigger RoutedEvent="Control.Loaded">
                <BeginStoryboard Storyboard="{StaticResource pathStoryboard}" />
            </EventTrigger>
        </Canvas.Triggers>

        <Path Data="{StaticResource path}" Stroke="Black" StrokeThickness="1" />

        <Path Fill="Orange">
            <Path.Data>
                <EllipseGeometry x:Name="ellipse" Center="5,5" RadiusX="12" RadiusY="12"/>
            </Path.Data>
        </Path>
    </Canvas>

DoubleAnimationUsingPath則是通過X、Y和Angle三個屬性聯(lián)合實現(xiàn)路徑的變化,一般在TranslateTransform中使用,如下就是一個簡單的例子: 

    <Canvas >
        <Canvas.Resources>
            <PathGeometry x:Key="path" Figures="M 10,100 C 35,0 135,0 160,100 180,190 285,200 310,100" />
            <Storyboard x:Key="pathStoryboard" >
                <DoubleAnimationUsingPath PathGeometry="{StaticResource path}"
                                          Storyboard.TargetName="translateTransform"
                                          Storyboard.TargetProperty="X"
                                          Source="X"
                                          Duration="0:0:5" RepeatBehavior="Forever" >
                </DoubleAnimationUsingPath>
                <DoubleAnimationUsingPath PathGeometry="{StaticResource path}"
                                          Storyboard.TargetName="translateTransform"
                                          Storyboard.TargetProperty="Y"
                                          Source="Y"
                                          Duration="0:0:5" RepeatBehavior="Forever" >
                </DoubleAnimationUsingPath>
            </Storyboard>
        </Canvas.Resources>

        <Canvas.Triggers>
            <EventTrigger RoutedEvent="Control.Loaded">
                <BeginStoryboard Storyboard="{StaticResource pathStoryboard}" />
            </EventTrigger>
        </Canvas.Triggers>

        <Path Data="{StaticResource path}" Stroke="Black" StrokeThickness="1" />

        <Path Fill="Orange">
            <Path.Data>
                <EllipseGeometry x:Name="ellipse" Center="5,5" RadiusX="12" RadiusY="12"/>
            </Path.Data>
            <Path.RenderTransform>
                <TranslateTransform x:Name="translateTransform" />
            </Path.RenderTransform>
        </Path>
    </Canvas>

到此這篇關(guān)于WPF實現(xiàn)動畫效果之路徑動畫的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解C#中==、Equals、ReferenceEquals的區(qū)別

    詳解C#中==、Equals、ReferenceEquals的區(qū)別

    C#中Equals , == , ReferenceEquals都可以用于判斷兩個對象的個體是不是相等,本篇文章詳解C#中Equals , == , ReferenceEquals都可以用于判斷兩個對象的個體是不是相等,有興趣的可以了解一下。
    2016-12-12
  • C#遞歸算法和排列算法

    C#遞歸算法和排列算法

    這篇文章介紹了C#的遞歸算法和排列算法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • C#字符串與正則表達式的圖文詳解

    C#字符串與正則表達式的圖文詳解

    正則表達式是個非常好的工具,它的作用主要是用簡單的有規(guī)則的表達式來檢索和匹配一段字符串,這篇文章主要給大家介紹了關(guān)于C#字符串與正則表達式的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • unity實現(xiàn)按住鼠標選取區(qū)域截圖

    unity實現(xiàn)按住鼠標選取區(qū)域截圖

    這篇文章主要為大家詳細介紹了unity實現(xiàn)按住鼠標選取區(qū)域截圖,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • c#通過unicode編碼判斷字符是否為中文示例分享

    c#通過unicode編碼判斷字符是否為中文示例分享

    本文介紹了c#通過unicode編碼判斷字符是否為中文的示例,在unicode字符串中,中文的范圍是在4E00..9FFF:CJK Unified Ideographs。通過對字符的unicode編碼進行判斷來確定字符是否為中文
    2014-01-01
  • C#窗體程序?qū)崿F(xiàn)全屏及取消全屏步驟

    C#窗體程序?qū)崿F(xiàn)全屏及取消全屏步驟

    這篇文章主要介紹了C#窗體程序?qū)崿F(xiàn)全屏及取消全屏步驟,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • C#如何將DLL打包到程序中

    C#如何將DLL打包到程序中

    這篇文章主要介紹了C#如何將DLL打包到程序中問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • C# 日歷類功能的實例代碼

    C# 日歷類功能的實例代碼

    本文通過實例代碼給大家介紹了C# 日歷類的相關(guān)知識,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2017-06-06
  • C#讀寫指定編碼格式的文本文件

    C#讀寫指定編碼格式的文本文件

    這篇文章主要為大家詳細介紹了C#讀寫指定編碼格式文本文件的方法,感興趣的小伙伴們可以參考一下
    2016-03-03
  • C#圖片按比例縮放的實現(xiàn)代碼

    C#圖片按比例縮放的實現(xiàn)代碼

    這篇文章主要介紹了C#圖片按比例縮放的實現(xiàn)代碼,有需要的朋友可以參考一下
    2014-01-01

最新評論