Windows Phone 7 Animation动画编程
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
说明要进行动画处理的依赖项属性的路径。