洪星的博客(原创版,新闻除外)

信息技术 软件开发 电信 移动通信(欢迎和我交流:QQ219402,15152399197)

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

代码中使用了 C# 3.0 语法

效果是一个红色矩形从右下角移动到左上角

仅仅是示例,演示如何在代码中动态创建动画

 

MainPage.xaml
<UserControl x:Class="Hongcing.Silverlight.Create_And_Run_Animation"
xmlns
="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml">
<Canvas Loaded="LayoutRoot_Loaded" />
</UserControl>

 

MainPage.xaml.cs
1 using System;
2  using System.Windows;
3  using System.Windows.Controls;
4  using System.Windows.Media;
5 using System.Windows.Media.Animation;
6 using System.Windows.Shapes;
7
8 namespace Hongcing.Silverlight
9 {
10 public partial class Create_And_Run_Animation : UserControl
11 {
12 public Create_And_Run_Animation()
13 {
14 InitializeComponent();
15 }
16
17 private void LayoutRoot_Loaded(object sender, RoutedEventArgs e)
18 {
19 var redRectangle = new Rectangle
20 {
21 Width = 300,
22 Height = 200,
23 Fill = new SolidColorBrush(Colors.Red),
24 Stroke = new SolidColorBrush(Colors.Black)
25 };
26
27 (sender as Panel).Children.Add(redRectangle);
28
29 var leftAnimation = new DoubleAnimation
30 {
31 Duration = new Duration(TimeSpan.FromSeconds(5)),
32 From = 700,
33 To = 0
34 };
35
36 var topAnimation = new DoubleAnimation
37 {
38 Duration = leftAnimation.Duration,
39 From = 350,
40 To = 0
41 };
42
43 Storyboard.SetTarget(leftAnimation, redRectangle);
44 Storyboard.SetTarget(topAnimation, redRectangle);
45
46 //属性路径也可以用 new PropertyPath("(Canvas.Left)")、new PropertyPath("(Canvas.Top)")
47 Storyboard.SetTargetProperty(leftAnimation, new PropertyPath(Canvas.LeftProperty));
48 Storyboard.SetTargetProperty(topAnimation, new PropertyPath(Canvas.TopProperty));
49
50 //此处没有添加到资源中,而是直接启动动画。
51 new Storyboard { Children = { leftAnimation, topAnimation } }.Begin();
52 }
53 }
54 }
55

 

posted on 2010-02-09 20:11  洪星  阅读(2130)  评论(7编辑  收藏  举报