📜  Silverlight-动画

📅  最后修改于: 2020-11-19 08:41:01             🧑  作者: Mango


动画使您可以创建真正的动态用户界面。它通常用于应用效果,例如,当您将鼠标悬停在图标上方时会变大的图标,旋转的徽标,滚动到视图中的文本等。

有时,这些效果似乎过于耀眼。如果使用得当,动画可以通过多种方式增强应用程序。它们可以使应用程序看起来更响应,自然和直观。

例如,单击时滑入的按钮感觉就像是真实的物理按钮,而不仅仅是另一个灰色矩形。动画还可以引起人们对重要元素的注意,并引导用户过渡到新内容。

Silverlight的动画方法是声明性的,而不是专注于帧动画序列。

定义动画

动画通常在资源部分中定义。实际上,它们通常包裹在故事板元素中,稍后我们将详细介绍。

  • 它提供了Begin()方法,因此可以从代码中调用动画。

  • 动画也可以放在控件模板的视觉状态元素内部。

声明性动画

Silverlight中的动画是声明性的。他们描述了将要发生的事情。由Silverlight来决定如何实现。因此动画通常遵循我们告诉Silverlight我们想要更改的模式。

这始终是某些命名元素(即TargetNameTargetProperty)上的某些属性。


  • 我们说在这种情况下我们希望该属性如何改变,我们正在将不透明度从零值更改为一值。换句话说,我们希望目标元素从不透明渐变为透明。

  • 最后,我们说我们要花费多长时间,在这种情况下,将花费五秒钟。

  • 此double动画中double的意义在于,它的目标是具有double类型(即浮点值)的属性。

  • 如果要设置代表颜色的属性的动画,请使用颜色动画。

让我们看一个双重动画的简单示例。下面给出的XAML代码中添加了两个按钮,一个矩形和两个故事板。


   
    
    
       
          
       
        
       
          
       
        
    
    
    
       
            
       
            
      
            
   
    
 

这是C#中不同事件的实现。

using System.Windows; 
using System.Windows.Controls;  

namespace DoubleAnimationExample { 

   public partial class MainPage : UserControl { 
    
      public MainPage() { 
         InitializeComponent(); 
      } 
      
      private void fadeUpButton_Click(object sender, RoutedEventArgs e) { 
         fadeUp.Begin(); 
      }
      
      private void fadeDownButton_Click(object sender, RoutedEventArgs e) { 
         fadeDown.Begin(); 
      } 
   } 
}

编译并执行上述代码后,您将看到以下输出。

声明性动画

重复和反转

动画提供了一些属性以自动重复和所有反向动画。

  • 如果将重复行为属性设置为时间垃圾邮件,则动画将循环重复,直到经过指定的时间,或者您可以告诉它您希望重复多少次。

  • 这支持小数点,因此您可以重复四次半。

  • 您可以永远重复一遍,还可以告诉动画,一旦到达终点,它应该反向运行回到起点。

关键帧动画

通常,从A到B的简单动画有点太简单了。例如,您要为从地面弹起的球设置动画。这不是简单的点对点运动。球掉落,逐渐加速,然后在击中底部时反转方向。回到旅行的最高处,再次减速。

让我们看一个关键帧动画的简单示例。

下面给出的XAML代码包含椭圆和带有关键帧的双重动画。


   
    
    
       
         
                
          

             
             
             
             
             
             
             
                
          
            
      
        
   
    
    
       
          
       
    
    
 

这是鼠标左键按下事件的实现,当用户在网页上按下鼠标左键按下事件时,它将开始动画。

using System.Windows.Controls; 
using System.Windows.Input; 
 
namespace LinearKeyFrames { 

   public partial class MainPage : UserControl {
    
      public MainPage() { 
         InitializeComponent();  
         this.MouseLeftButtonDown += new MouseButtonEventHandler(Page_MouseLeftButtonDown); 
      } 
      
      void Page_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { 
         ballAnim.Begin(); 
      } 
   } 
} 

编译并执行上述代码后,您将看到以下输出。

关键帧动画

当您单击网页时,您将看到球开始移动。

关键帧动画移动