WPF随笔

导航

用C++代码中实现WPF动画 -- Opacity Animation

                        用C++代码中实现WPF动画 -- Opacity Animation

    很多人都习惯使用Blend来帮助编辑XAML文件,生成很多动画。但在实际开发中,用代码来实现动画还是很实用的,而且代码的逻辑开发能力更强,更容易控制,这方面C#的例子已经很多了,下面我介绍几个C++的例子。
    首先介绍少渐隐渐现,也就是Alpha Animation。代码如下

    /*
    *  Take Label for example
    
*/

    
// 1, Find the lable by its name, The name define in the xaml file
    Label^ pColorLabel = (Label^)page->FindName("ColorAnimationLabel");

    
// 2, Define a DoubleAnimation object
    DoubleAnimation^ pDoubleAnimation = gcnew DoubleAnimation();

    
// 3, Set from to and duration
    pDoubleAnimation->From = 1;
    pDoubleAnimation
->To = 0;
    pDoubleAnimation
->Duration = Duration(TimeSpan::FromSeconds(3));

    
// 4, Create a storyboard(Timeline)
    Storyboard^ pStoryboard = gcnew Storyboard();

    
// 5, Set the DoubleAnimation's target name
    pStoryboard->SetTargetName(pDoubleAnimation, _T("ColorAnimationLabel"));

    
// 6, Set the DoubleAnimation's property
    pStoryboard->SetTargetProperty(pDoubleAnimation, gcnew PropertyPath(Label::OpacityProperty));

    
// 7, Add the DoubleAnimation object to the storyboard
    pStoryboard->Children->Add(pDoubleAnimation);

    
// 8, Start the animation
    pStoryboard->Begin(pColorLabel);

上面代码所用的XAML如下
<Page
    
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml"
    
>
  
<Grid>
    
<DockPanel>
      
<Button Name="ColorAnmationButton" Width="100" Height="50" Background="LightBlue">Color Anmation</Button>
      
<Label Name="ColorAnimationLabel" Width="200" Height="50" Background="Red">
      
</Label>
    
</DockPanel>
  
</Grid>
</Page>

posted on 2007-12-13 22:30  Jeffery Sun  阅读(4714)  评论(10编辑  收藏  举报