[Windows 8 App]Storyboard-------移動的動畫效果

[Windows 8 App]Storyboard-------移動的動畫效果

如果產生的動畫影像了介面的布局

例如改變了元素的寬度、高度或者是改變了元素的位置

此時要將動畫對象的EnableDependentAnimation屬性設為True

這樣子才能確保動畫正常播放

下面針對這種情況做了一個範例

 

首先,新增一個專案【PointAnimation】,開啟【MainPage.xaml】

這是【MainPage.xaml】的完整程式碼:

 


<Page
    x:Class="PointAnimation.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:PointAnimation"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
        <Canvas>
            <Canvas.Resources>
                <Storyboard x:Name="storyboard">
                    <PointAnimation EnableDependentAnimation="True" Storyboard.TargetProperty="Center" Storyboard.TargetName="AnimatedEllipseGeometry" Duration="0:0:5" From="30,600" To="900,30" RepeatBehavior="Forever"/>
                </Storyboard>
            </Canvas.Resources>
        </Canvas>
        <Path Fill="Red">
            <Path.Data>
                <EllipseGeometry x:Name="AnimatedEllipseGeometry" Center="30,600" RadiusX="30" RadiusY="30" />
            </Path.Data>
        </Path>
        <StackPanel Orientation="Horizontal" Margin="174,270,-154,-270">
            <Button Click="Animation_Begin" Width="266" Height="142" FontSize="50" Margin="2,292,2,334" Content="開始動畫" />
            <Button Click="Animation_Resume" Width="254" Height="142" FontSize="50" Margin="2,292,2,334" Content="恢復動畫" />
                <Button Click="Animation_Stop" Width="249" Height="142" FontSize="50" Margin="2,292,2,334" Content="停止動畫" />
                    <Button Click="Animation_Pause" Width="266" Height="142" FontSize="50" Margin="2,292,2,334" Content="暫停動畫" />
        </StackPanel>
    </Grid>
</Page>

 

首先在Canvs元素的Canvas.Resources中添加一個Storyboard元素

接著在Stotyboard元素中添加一個PointAnimation動畫

並設定PointAnimation動畫控制的屬性為Center

定義From屬性的座標為(30,600)

To屬性的座標為(900,30)

然後又在Grid的最後面添加一個StackPanel元素,其中含有四個按鈕

四個按鈕都定義了Click事件,包含了啟動、暫停、恢復、停止動畫等功能

以便控制動畫的播放狀態

接著,開啟【MainPage.xaml.cs】為這四個按鈕添加事件處理方法:


private void Animation_Begin(object sender, RoutedEventArgs e)
        {
            storyboard.Begin();
        }

        private void Animation_Pause(object sender, RoutedEventArgs e)
        {
            storyboard.Pause();
        }

        private void Animation_Resume(object sender, RoutedEventArgs e)
        {
            storyboard.Resume();
        }

        private void Animation_Stop(object sender, RoutedEventArgs e)
        {
            storyboard.Stop();
        }

 

執行專案的畫面:

315

 

動畫影片: