您的位置:首页 > 编程语言

[Windows通用应用开发]从代码创建StoryBoard

2015-04-16 04:23 239 查看

从代码创建StoryBoard

本方法适用于采用Windows运行时的Windows和Windows Phone系统应用开发

采用Silverlight运行时的Windows Phone应用开发请参考此链接

文中所有的代码均为C#

StoryBoard可以在Blend中生成Xaml代码,该方法较简单,本文不再讨论。

从代码创建StoryBoard需要用到Windows.UI.Xaml.Media.Animation.Storyboard类,分为以下几个步骤:

(已经用Xaml创建了一个叫做rect的矩形,也是动画的对象,动画的目的是大小增加为2倍)

创建Transform

设置变换方式

CompositeTransform myTransform = new CompositeTransform();
myTransform.ScaleX = 1;
myTransform.ScaleY = 1;
rect.RenderTransform = myTransform;


创建Animation

设定动画类型,创建两个Animation,用于X和Y坐标的变换,Duration表示动画的时间长度

DoubleAnimation myAnimationX = new DoubleAnimation();
DoubleAnimation myAnimationY = new DoubleAnimation();
Duration duration = new Duration(TimeSpan.FromSeconds(2));
myAnimationX.Duration = duration;
myAnimationY.Duration = duration;


创建StoryBoard并设定目标

SetTargetProperty确定动画影响的目标属性

Storyboard story = new Storyboard();
story.Duration = duration;
story.Children.Add(myAnimationX);
story.Children.Add(myAnimationY);
Storyboard.SetTarget(myAnimationX, myTransform);
Storyboard.SetTarget(myAnimationY, myTransform);
Storyboard.SetTargetProperty(myAnimationX, "ScaleX");
Storyboard.SetTargetProperty(myAnimationY, "ScaleY");


确定目标变换量

此处为X和Y方向大小的变换量

myAnimationX.To = 2;
myAnimationY.To = 2;


StoryBoard加入到资源

Resources.Add("myStoryboard", story);


动画开始!

story.Begin();


再给出一个用双帧改变TextBlock(Name: TB_test)字号的例子:

Storyboard story = new Storyboard();
Duration duration = new Duration(TimeSpan.FromSeconds(0.05));
story.Duration = duration;
DoubleAnimationUsingKeyFrames expand = new DoubleAnimationUsingKeyFrames();
EasingDoubleKeyFrame e1 = new EasingDoubleKeyFrame();
e1.KeyTime = KeyTime.FromTimeSpan(TimeSpan.FromTicks(0));
e1.Value = 40;
EasingDoubleKeyFrame e2 = new EasingDoubleKeyFrame();
e2.KeyTime = KeyTime.FromTimeSpan(TimeSpan.FromSeconds(0.1));
e2.Value = 10;
expand.KeyFrames.Add(e1);
expand.KeyFrames.Add(e2);
expand.EnableDependentAnimation = true;
story.Children.Add(expand);
Storyboard.SetTarget(expand, TB_test);
Storyboard.SetTargetProperty(expand, "(TextBlock.FontSize)");
Resources.Add("Storyboard1", story);
story.Begin();


所有代码均通过Windows 10 Mobile和Windows 10真机调试
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐