wpf中后台代码动态控制Storyboard(一)

做一个wpf的电子地图,在图上有闪烁的红点表示特定区域,实验代码如下:

xaml代码:

        <Storyboard x:Key="Storyboard1" RepeatBehavior="Forever" AutoReverse="True">
            
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="ellipse1" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">
                
<SplineDoubleKeyFrame KeyTime="00:00:00" Value="1"/>
                
<SplineDoubleKeyFrame KeyTime="00:00:01" Value="2"/>
            
</DoubleAnimationUsingKeyFrames>
            
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="ellipse1" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)">
                
<SplineDoubleKeyFrame KeyTime="00:00:00" Value="1"/>
                
<SplineDoubleKeyFrame KeyTime="00:00:01" Value="2"/>
            
</DoubleAnimationUsingKeyFrames>
        
</Storyboard>

 后台控制代码如下:

            my_sb = (Storyboard)this.FindResource("Storyboard1");
            my_sb.Begin(
this);

这个Storyboard的RepeatBehavior="Forever"

现在想做一个控制,让Storyboard可以恢复原状:

首先使用如下代码:

            my_sb = (Storyboard)this.FindResource("Storyboard1");
            my_sb.Stop(
this);

 接下来要做一个按钮,能暂停和继续Storyboard,代码如下:

 

            my_sb = (Storyboard)this.FindResource("Storyboard1");
            
bool state = my_sb.GetIsPaused(this);
            
if (!state)
            {
                my_sb.Pause(
this);
            }
            
if(state)
                my_sb.Resume(
this);

 上述代码中my_sb.GetIsPaused(this)判断storyboard当前是不是暂停状态

接下来还要做一个按钮,能停止和启动Storyboard,但是Storyboard没有函数判断Storyboard是否运行状态。应该还要利用clock状态

明天继续做实验。

 

posted @ 2011-12-16 21:38  therockthe  阅读(1360)  评论(0)    收藏  举报