<StackPanel Loaded="Start_Animation" Background="Red" x:Name="stackPanel">
<StackPanel.Resources>
<Storyboard x:Name="colorStoryboard" Completed="colorStoryboard_Completed">
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="rectangle" Storyboard.TargetProperty="X" Duration="0:0:10" FillBehavior="Stop">
<LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
<LinearDoubleKeyFrame Value="350" KeyTime="0:0:2"/>
<LinearDoubleKeyFrame Value="50" KeyTime="0:0:7"/>
<LinearDoubleKeyFrame Value="200" KeyTime="0:0:8"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</StackPanel.Resources>
<Rectangle Fill="Blue" Width="50" Height="50">
<Rectangle.RenderTransform>
<TranslateTransform x:Name="rectangle" X="0" Y="0"/>
</Rectangle.RenderTransform>
</Rectangle>
<TextBlock x:Name="textBlock" FontSize="30"/>
</StackPanel>C#
public partial class Page : UserControl
...{
int i=1;
System.Windows.Threading.DispatcherTimer timer;
public Page()
...{
InitializeComponent();
timer = new System.Windows.Threading.DispatcherTimer();
timer.Interval = new TimeSpan(0, 0, 0, 1);
timer.Tick += new EventHandler(timer_Tick);
timer.Start();
textBlock.Text = i.ToString();
}
public void Start_Animation(object sender, EventArgs e)
...{
colorStoryboard.Begin();
}
void timer_Tick(object sender, EventArgs e)
...{
if (i <= 10)
...{
textBlock.Text = i++.ToString();
}
else
...{
timer.Stop();
}
}
private void colorStoryboard_Completed(object sender, EventArgs e)
...{
textBlock.Text = "Completed is appeared";
}
}
本文介绍了一个使用WPF创建动画效果的例子,并通过C#实现定时更新UI文本的方法。该示例展示了如何利用Storyboard进行复杂的动画设计,同时介绍了如何通过DispatcherTimer来周期性地改变界面上显示的数值。
2万+

被折叠的 条评论
为什么被折叠?



