上接稳扎稳打Silverlight(11) - 2.0动画之ColorAnimation, DoubleAnimation, PointAnimation

简介:

4、KeyFrame.xaml
<UserControl x:Class="Silverlight20.Animation.KeyFrame" 
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
        <StackPanel HorizontalAlignment="Left"> 
         
                <!-- 
                ColorAnimationUsingKeyFrames - 在一组 KeyFrame 中所设置的多个 Color 值之间做动画处理 
                DoubleAnimationUsingKeyFrames - 在一组 KeyFrame 中所设置的多个 Double 值之间做动画处理 
                PointAnimationUsingKeyFrames - 在一组 KeyFrame 中所设置的多个 Point 值之间做动画处理 
                --> 
                 
                <!-- 
                LinearColorKeyFrame - 在前一个关键帧的 Color 值及其自己的 Value 之间进行线性内插动画处理 
                DiscreteColorKeyFrame - 在前一个关键帧的 Color 值及其自己的 Value 之间进行离散内插动画处理 
                SplineColorKeyFrame - 在前一个关键帧的 Color 值及其自己的 Value 之间按 三次贝塞尔曲线 进行内插动画处理 
                 
                LinearDoubleKeyFrame - 在前一个关键帧的 Double 值及其自己的 Value 之间进行线性内插动画处理 
                DiscreteDoubleKeyFrame - 在前一个关键帧的 Double 值及其自己的 Value 之间进行离散内插动画处理 
                SplineDoubleKeyFrame - 在前一个关键帧的 Double 值及其自己的 Value 之间按 三次贝塞尔曲线 进行内插动画处理 
                 
                LinearPointKeyFrame - 在前一个关键帧的 Point 值及其自己的 Value 之间进行线性内插动画处理 
                DiscretePointKeyFrame - 在前一个关键帧的 Point 值及其自己的 Value 之间进行离散内插动画处理 
                SplinePointKeyFrame - 在前一个关键帧的 Point 值及其自己的 Value 之间按 三次贝塞尔曲线 进行内插动画处理 
                --> 
                 
                <!-- 
                Value - 关键帧的目标值 
                KeyTime - 到达关键帧目标值的时间 
                KeySpline - 三次贝塞尔曲线的两个控制点:x1,y1 x2,y2(该三次贝塞尔曲线的起点为0,0,终点为1,1) 
                --> 
         
                <Grid Margin="5" > 
                        <Grid.Resources> 
                                <Storyboard x:Name="caStoryboard"> 
                                        <ColorAnimationUsingKeyFrames 
                                                Storyboard.TargetName="caBrush" 
                                                Storyboard.TargetProperty="Color" 
                                                Duration="0:0:10" 
                                        > 
                                                <LinearColorKeyFrame Value="Green" KeyTime="0:0:3" /> 
                                                <DiscreteColorKeyFrame Value="Blue" KeyTime="0:0:4" /> 
                                                <SplineColorKeyFrame Value="Red" KeySpline="0.6,0.0 0.9,0.00" KeyTime="0:0:6" /> 
                                        </ColorAnimationUsingKeyFrames> 
                                </Storyboard> 
                        </Grid.Resources> 

                        <Rectangle x:Name="caRectangle" MouseLeftButtonDown="caRectangle_MouseLeftButtonDown" Width="100" Height="50"> 
                                <Rectangle.Fill> 
                                        <SolidColorBrush x:Name="caBrush" Color="Red" /> 
                                </Rectangle.Fill> 
                        </Rectangle> 
                </Grid> 

                <Grid Margin="5" > 
                        <Grid.Resources> 
                                <Storyboard x:Name="daStoryboard"> 
                                        <DoubleAnimationUsingKeyFrames 
                                                Storyboard.TargetName="daTransform" 
                                                Storyboard.TargetProperty="X" 
                                                Duration="0:0:10" 
                                        > 
                                                <LinearDoubleKeyFrame Value="500" KeyTime="0:0:3" /> 
                                                <DiscreteDoubleKeyFrame Value="400" KeyTime="0:0:4" /> 
                                                <SplineDoubleKeyFrame Value="0" KeySpline="0.6,0.0 0.9,0.00" KeyTime="0:0:6" /> 
                                        </DoubleAnimationUsingKeyFrames> 
                                </Storyboard> 
                        </Grid.Resources> 

                        <Rectangle x:Name="daRectangle" MouseLeftButtonDown="daRectangle_MouseLeftButtonDown" Fill="Red" Width="100" Height="50"> 
                                <Rectangle.RenderTransform> 
                                        <TranslateTransform x:Name="daTransform" X="0" Y="0" /> 
                                </Rectangle.RenderTransform> 
                        </Rectangle> 
                </Grid> 

                <Grid Margin="5" > 
                        <Grid.Resources> 
                                <Storyboard x:Name="paStoryboard"> 
                                        <PointAnimationUsingKeyFrames 
                                                Storyboard.TargetName="paGeometry" 
                                                Storyboard.TargetProperty="Center" 
                                                Duration="0:0:10" 
                                        > 
                                                <LinearPointKeyFrame Value="100,100" KeyTime="0:0:3" /> 
                                                <DiscretePointKeyFrame Value="200,200" KeyTime="0:0:4" /> 
                                                <SplinePointKeyFrame Value="50,50" KeySpline="0.6,0.0 0.9,0.00" KeyTime="0:0:6" /> 
                                        </PointAnimationUsingKeyFrames> 
                                </Storyboard> 
                        </Grid.Resources> 

                        <Path Fill="Red" MouseLeftButtonDown="paPath_MouseLeftButtonDown"> 
                                <Path.Data> 
                                        <EllipseGeometry x:Name="paGeometry" Center="50,50" RadiusX="15" RadiusY="15" /> 
                                </Path.Data> 
                        </Path> 
                </Grid> 
        </StackPanel> 
</UserControl>
 
KeyFrame.xaml.cs
InBlock.gif using System; 
InBlock.gif using System.Collections.Generic; 
InBlock.gif using System.Linq; 
InBlock.gif using System.Net; 
InBlock.gif using System.Windows; 
InBlock.gif using System.Windows.Controls; 
InBlock.gif using System.Windows.Documents; 
InBlock.gif using System.Windows.Input; 
InBlock.gif using System.Windows.Media; 
InBlock.gif using System.Windows.Media.Animation; 
InBlock.gif using System.Windows.Shapes; 
InBlock.gif 
InBlock.gif namespace Silverlight20.Animation 
InBlock.gif
InBlock.gif         public partial  class KeyFrame : UserControl 
InBlock.gif        { 
InBlock.gif                 public KeyFrame() 
InBlock.gif                { 
InBlock.gif                        InitializeComponent(); 
InBlock.gif                } 
InBlock.gif 
InBlock.gif                 private  void caRectangle_MouseLeftButtonDown( object sender, MouseButtonEventArgs e) 
InBlock.gif                { 
InBlock.gif                        caStoryboard.Begin(); 
InBlock.gif                } 
InBlock.gif 
InBlock.gif                 private  void daRectangle_MouseLeftButtonDown( object sender, MouseButtonEventArgs e) 
InBlock.gif                { 
InBlock.gif                        daStoryboard.Begin(); 
InBlock.gif                } 
InBlock.gif 
InBlock.gif                 private  void paPath_MouseLeftButtonDown( object sender, MouseButtonEventArgs e) 
InBlock.gif                { 
InBlock.gif                        paStoryboard.Begin(); 
InBlock.gif                } 
InBlock.gif        } 
InBlock.gif}
 
 
5、Programmatically.xaml
<UserControl x:Class="Silverlight20.Animation.Programmatically" 
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
        <StackPanel HorizontalAlignment="Left"> 

                <!-- 
                MouseLeftButtonDown - 在该Canvas上单击鼠标后所执行的事件 
                --> 
                <Canvas x:Name="canvas" Background="Yellow" Width="640" Height="480" MouseLeftButtonDown="Canvas_MouseLeftButtonDown"> 
                        <Path Fill="Red"> 
                                <Path.Data> 
                                        <EllipseGeometry x:Name="ellipseGeometry" Center="200,100" RadiusX="15" RadiusY="15" /> 
                                </Path.Data> 
                        </Path> 
                </Canvas> 

                <StackPanel.Resources> 
                        <Storyboard x:Name="storyboard"> 
                                <PointAnimation    
                                        x:Name="pointAnimation" 
                                        Storyboard.TargetProperty="Center" 
                                        Storyboard.TargetName="ellipseGeometry" 
                                        Duration="0:0:2"/> 
                        </Storyboard> 
                </StackPanel.Resources> 
        </StackPanel> 

</UserControl>
 
Programmatically.xaml.cs
InBlock.gif using System; 
InBlock.gif using System.Collections.Generic; 
InBlock.gif using System.Linq; 
InBlock.gif using System.Net; 
InBlock.gif using System.Windows; 
InBlock.gif using System.Windows.Controls; 
InBlock.gif using System.Windows.Documents; 
InBlock.gif using System.Windows.Input; 
InBlock.gif using System.Windows.Media; 
InBlock.gif using System.Windows.Media.Animation; 
InBlock.gif using System.Windows.Shapes; 
InBlock.gif 
InBlock.gif namespace Silverlight20.Animation 
InBlock.gif
InBlock.gif         public partial  class Programmatically : UserControl 
InBlock.gif        { 
InBlock.gif                 public Programmatically() 
InBlock.gif                { 
InBlock.gif                        InitializeComponent(); 
InBlock.gif                } 
InBlock.gif 
InBlock.gif                 private  void Canvas_MouseLeftButtonDown( object sender, MouseButtonEventArgs e) 
InBlock.gif                { 
InBlock.gif                         // 鼠标相对与canvas的坐标 
InBlock.gif                         double newX = e.GetPosition(canvas).X; 
InBlock.gif                         double newY = e.GetPosition(canvas).Y; 
InBlock.gif                        Point myPoint =  new Point(newX, newY); 
InBlock.gif 
InBlock.gif                         // 将动画的结束值设置为鼠标的当前坐标 
InBlock.gif                        pointAnimation.To = myPoint; 
InBlock.gif 
InBlock.gif                         // 播放动画 
InBlock.gif                        storyboard.Begin(); 
InBlock.gif                } 
InBlock.gif        } 
InBlock.gif}
 
 



     本文转自webabcd 51CTO博客,原文链接: http://blog.51cto.com/webabcd/343037 ,如需转载请自行联系原作者

相关文章
|
容器
Silverlight & Blend动画设计系列二:旋转动画(RotateTransform)
原文:Silverlight & Blend动画设计系列二:旋转动画(RotateTransform)   Silverlight的基础动画包括偏移、旋转、缩放、倾斜和翻转动画,这些基础动画毫无疑问是在Silverlight中使用得最多的动画效果,其使用也是非常简单的。
965 0
|
容器 数据可视化 内存技术
Silverlight & Blend动画设计系列一:偏移动画(TranslateTransform)
原文:Silverlight & Blend动画设计系列一:偏移动画(TranslateTransform)   用户界面组件、图像元素和多媒体功能可以让我们的界面生动活泼,除此之外,Silverlight还具备动画功能,它可以让应用程序“动起来”。
794 0
Silverlight & Blend动画设计系列四:倾斜动画(SkewTransform)
原文:Silverlight & Blend动画设计系列四:倾斜动画(SkewTransform)   Silverlight中的倾斜变化动画(SkewTransform)能够实现对象元素的水平、垂直方向的倾斜变化动画效果。
796 0
|
容器
Silverlight & Blend动画设计系列五:故事板(StoryBoards)和动画(Animations)
原文:Silverlight & Blend动画设计系列五:故事板(StoryBoards)和动画(Animations)   正如你所看到的,Blend是一个非常强大的节约时间的设计工具,在Blend下能够设计出很多满意的动画作品,或许他具体是怎么实现的,通过什么方式实现的我们还是一无所知。
912 0
Silverlight & Blend动画设计系列七:模糊效果(BlurEffect)与阴影效果(DropShadowEffect)
原文:Silverlight & Blend动画设计系列七:模糊效果(BlurEffect)与阴影效果(DropShadowEffect)   模糊效果(BlurEffect)与阴影效果(DropShadowEffect)是两个非常实用和常用的两个特效,比如在开发相册中,可以对照片的缩略图添加模糊效果,在放大照片的过程中动态改变照片的大小和模糊的透明度来达到一个放大透明的效果。
1046 0
Silverlight & Blend动画设计系列六:动画技巧(Animation Techniques)之对象与路径转化、波感特效
原文:Silverlight & Blend动画设计系列六:动画技巧(Animation Techniques)之对象与路径转化、波感特效   当我们在进行Silverlight & Blend进行动画设计的过程中,可能需要设计出很多效果不一的图形图像出来作为动画的基本组成元素。
1003 0
|
API
Silverlight & Blend动画设计系列十:Silverlight中的坐标系统(Coordinate System)与向量(Vector)运动
原文:Silverlight & Blend动画设计系列十:Silverlight中的坐标系统(Coordinate System)与向量(Vector)运动   如果我们习惯于数学坐标系,那么对于Silverlight中的坐标系可能会有些不习惯。
1232 0
|
UED
Silverlight & Blend动画设计系列九:动画(Animation)与视图状态管理(Visual State Manager)
原文:Silverlight & Blend动画设计系列九:动画(Animation)与视图状态管理(Visual State Manager)   Silverlight中的动画(Animation)与视图状态管理(Visual State Manager) 结合使用是非常常见的,动画用于管理对象在某段事件段内执行的动画动作,视图状态管理则用于控制对象在多个不同的视觉状态之间切换、导航。
769 0
Silverlight & Blend动画设计系列八:拖放(Drag-Drop)操作与拖放行为(DragBehavior)
原文:Silverlight & Blend动画设计系列八:拖放(Drag-Drop)操作与拖放行为(DragBehavior)   在Silverlight中自身并没有提供拖放功能的相关实现,要实现拖放功能得借助其事件支持(MouseLeftButtonDown、MouseLeftButtonUp和MouseMove)来完成,实际应用中我们可以通过行为(Behavior)特性将拖放操作封装为行为,这样可达到代码复用的效果。
1047 0
Silverlight & Blend动画设计系列十三:三角函数(Trigonometry)动画之飘落的雪花(Falling Snow)
原文:Silverlight & Blend动画设计系列十三:三角函数(Trigonometry)动画之飘落的雪花(Falling Snow)   平时我们所看到的雪花(Falling Snow)飘飘的效果实际上也是一个动画,是由许多的动画对象共同完成的一个界面效果。
932 0

热门文章

最新文章