【发布时间】:2011-01-29 16:10:36
【问题描述】:
我有一个应用程序,当用户单击开始按钮并需要很长时间时,它会做一些困难的事情。在此期间,我想在标签上做一些动画,例如,将不透明度从 0 更改为 1,反之亦然,并在更改不透明度的同时在几种颜色之间更改前景色。我希望它在后台工作人员完成工作时停止做动画。我怎样才能做到这一点?以及如何从 c# 启动和停止动画?
【问题讨论】:
标签: wpf multithreading animation backgroundworker
我有一个应用程序,当用户单击开始按钮并需要很长时间时,它会做一些困难的事情。在此期间,我想在标签上做一些动画,例如,将不透明度从 0 更改为 1,反之亦然,并在更改不透明度的同时在几种颜色之间更改前景色。我希望它在后台工作人员完成工作时停止做动画。我怎样才能做到这一点?以及如何从 c# 启动和停止动画?
【问题讨论】:
标签: wpf multithreading animation backgroundworker
您的动画将托管在情节提要中。
这是一个例子:
<Window.Resources>
<Storyboard x:Key="sb" Duration="0:0:2" RepeatBehavior="Forever">
<DoubleAnimation Storyboard.TargetName="l"
Storyboard.TargetProperty="Opacity"
From="1" To="0" AutoReverse="True" />
<ColorAnimation Storyboard.TargetName="l"
Storyboard.TargetProperty="Foreground.Color"
From="HotPink" To="Lime" AutoReverse="True" />
</Storyboard>
</Window.Resources>
<StackPanel>
<Label Name="l" FontSize="72">Oh noes!</Label>
<Button Click="Button_Click">Animate me!</Button>
</StackPanel>
还有 Button_Click 处理程序:
private void Button_Click(object sender, RoutedEventArgs e)
{
((Storyboard)(FindResource("sb"))).Begin();
// and kick off your BackgroundWorker
}
【讨论】: