Storyboard 中Completed事件的处理示例

本文介绍了一个使用WPF创建动画效果的例子,并通过C#实现定时更新UI文本的方法。该示例展示了如何利用Storyboard进行复杂的动画设计,同时介绍了如何通过DispatcherTimer来周期性地改变界面上显示的数值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<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(0001);
            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";
        }

    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值