Windows Phone 7 Animation动画编程

本文介绍了Silverlight中的动画机制,特别是Storyboard类的使用方法。通过一个简单的按钮旋转动画示例,展示了如何利用Storyboard来控制动画播放,包括动画的开始、停止、暂停及继续等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Silverlight动画概述
http://msdn.microsoft.com/zh-cn/library/cc189019(v=VS.95).aspx

类的继承关系

Object
    DependencyObject (abstract)
         Timeline (abstract)
              DoubleAnimation
              DoubleAnimationUsingKeyFrames
              ColorAnimation
              ColorAnimationUsingKeyFrames
              PointAnimation
              PointAnimationUsingKeyFrames
              ObjectAnimationUsingKeyFrames

Storyboard 类介绍

通过时间线控制动画,并为其子动画提供对象和属性目标信息。
System.Windows.Media.Animation
 XAML 
 <Storyboard ...>
  oneOrMoreChildTimelines
</Storyboard>

XAML 值
oneOrMoreChildTimelines
从 Timeline 派生的类的一个或多个对象元素。这可以是另一个 Storyboard,也可以是许多动画类型中的任意一种。

 可以将 Storyboard 作为其他动画对象(例如 DoubleAnimation)以及其他 Storyboard 对象的容器。可以使用 Storyboard 对象的交互式方法来启动、暂停、继续和停止动画。可以使用 Begin、Stop、Pause 和 Resume 方法来控制演示图板(动画)的播放。

例子点击按钮按钮会旋转一圈 


  
< Button Content ="会旋转的按钮"
Grid.Row
="0"
HorizontalAlignment
="Center"
VerticalAlignment
="Center"
RenderTransformOrigin
="0.5 0.5"
Click
="OnButtonClick" >
< Button.RenderTransform >
< RotateTransform />
</ Button.RenderTransform >
</ Button >

  
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;

namespace ClickAndSpin
{
public partial class MainPage : PhoneApplicationPage
{
public MainPage()
{
InitializeComponent();
}

void OnButtonClick( object sender, RoutedEventArgs args)
{
Button btn
= sender as Button;
RotateTransform rotateTransform
= btn.RenderTransform as RotateTransform;

// 创建和定义 animation
DoubleAnimation anima = new DoubleAnimation();
anima.From
= 0 ; // 开始的值
anima.To = 360 ; // 结束的值
anima.Duration = new Duration(TimeSpan.FromSeconds( 0.5 )); // 持续的时间

// 设置Storyboard的属性
Storyboard.SetTarget(anima, rotateTransform);
Storyboard.SetTargetProperty(anima,
new PropertyPath(RotateTransform.AngleProperty));

// 创建 storyboard, 并且添加上 animation, 然后动画开始!
Storyboard storyboard = new Storyboard();
storyboard.Children.Add(anima);
storyboard.Begin();
}
}
}

备注:

Storyboard.SetTarget(timeline ,target) 方法
Silverlight 导致指定的 Timeline 以指定对象为目标。

timeline
类型:System.Windows.Media.Animation.Timeline
以指定的依赖项对象为目标的时间线。
target
类型:System.Windows.DependencyObject
要作为目标的对象的实际实例。
 

Storyboard.SetTargetProperty(element ,path) 方法
Silverlight 使指定的 Timeline 以指定的依赖项属性为目标。

element
类型:System.Windows.Media.Animation.Timeline
要将指定的依赖项属性与之关联的时间线。
path
类型:System.Windows.PropertyPath
说明要进行动画处理的依赖项属性的路径。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值