按键动画

XAML:
<Window x:Class="WpfApplication7.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="370" Width="450">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition></RowDefinition>
            <RowDefinition></RowDefinition>
            <RowDefinition></RowDefinition>
        </Grid.RowDefinitions>
        <Button Padding="10" Name="cmdGrow" Click="cmdGrow_Click" Height="40" Width="160"
                HorizontalAlignment="Center" VerticalAlignment="Center">
            Click make me grow
        </Button>
        <Button Grid.Row="1" Padding="10" Name="cmdShrink" Click="cmdShrink_Click"
                HorizontalAlignment="Center" VerticalAlignment="Center">Shrink It Back</Button>
        <Button Grid.Row="2" Padding="10" Name="cmdGrowIncrementally"
            HorizontalAlignment="Center" VerticalAlignment="Center" Click="cmdGrowIncrementally_Click"
                 Width="240">Click me make me grow</Button>
    </Grid>
</Window>
后台代码:
private void cmdGrow_Click(object sender, RoutedEventArgs e)
{
    DoubleAnimation widthAnimation = new DoubleAnimation();
    widthAnimation.To = this.Width - 30;
    widthAnimation.Duration = TimeSpan.FromSeconds(5);
    widthAnimation.Completed += animation_Completed;

    DoubleAnimation heightAnimation = new DoubleAnimation();
    heightAnimation.To = (this.Height - 50)/3;
    heightAnimation.Duration = TimeSpan.FromSeconds(5);

    cmdGrow.BeginAnimation(Button.WidthProperty, widthAnimation);
    cmdGrow.BeginAnimation(Button.HeightProperty, heightAnimation);   
}
private void animation_Completed(object sender, EventArgs e)
{
    //double currentWidth = cmdGrow.Width;
    //cmdGrow.BeginAnimation(Button.WidthProperty, null);
    //cmdGrow.Width = currentWidth;

    //MessageBox.Show("Completed!");
}

private void cmdShrink_Click(object sender, RoutedEventArgs e)
{
    DoubleAnimation widthAnimation = new DoubleAnimation();
    widthAnimation.Duration = TimeSpan.FromSeconds(5);           
    DoubleAnimation heightAnimation = new DoubleAnimation();
    heightAnimation.Duration = TimeSpan.FromSeconds(5);
    cmdGrow.BeginAnimation(Button.WidthProperty, widthAnimation);
    cmdGrow.BeginAnimation(Button.HeightProperty, heightAnimation);
}

private void cmdGrowIncrementally_Click(object sender, RoutedEventArgs e)
{
    DoubleAnimation widthAnimation = new DoubleAnimation();
    widthAnimation.By = 10;
    widthAnimation.Duration = TimeSpan.FromSeconds(0.5);                      

    cmdGrowIncrementally.BeginAnimation(Button.WidthProperty, widthAnimation);           
}

posted on 2013-07-05 11:12  家乡的萝卜  阅读(214)  评论(0编辑  收藏  举报