用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);
* 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>
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 阅读(4713) 评论(10) 编辑 收藏 举报