WPF 动画 -- Opacity Animation

5 views
Skip to first unread message

bluefin

unread,
Jun 25, 2008, 2:25:10 PM6/25/08
to C# Guide
很多人都习惯使用Blend来帮助编辑XAML文件,生成很多动画。但在实际开发中,用代码来实现动画还是很实用的,而且代码的逻辑开发能力更强,更容
易控制,这方面C#的例子已经很多了,下面我介绍几个 Managed C++的例子。

首先介绍少渐隐渐现,也就是Alpha Animation。代码如下
// 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>

不管是WinForm的控件还是MFC的控件窗口,都可以Host到WPF的窗口中。

Managed C++是支持.Net的语言中用户最少的,但是它也为C++程序员带来了很多方便,C++程序员基本上可以不用学习就可以使用C++/
CLI + WPF + C++进行开发,也可以很容易使用已有的C++代码,包括Dll,Lib,COM等。以及MFC,STL等。
Reply all
Reply to author
Forward
0 new messages