2012-04-01 9 views
4

ストーリーボードを使用して複数の画像を(スライドショーのように)表示するユーザーコントロールです(C#で作成しています)死ぬ。問題は、特定のkeyFrameで開始および停止していることです。これはPause()とResume()を論理的に使っているようですが、正確なkeyFrameで一時停止する方法はわかりません。正確なkeyFrameでストーリーボードを停止する

dispatcherTimerを使用している人もいますが、正確なキーフレームで停止させるには正確ではありません。 (例えば、4を投げる場合は、4つの画像で停止する必要があります)。

このようないくつかの方法があったのであれば、それは素晴らしいことだ:

TimeSpan keyTime = new TimeSpan(0,0,0,0,750); // 750 miliseconds 
myStoryBoard.ResumeTo(keyTime); // <- doesn't exist as far as I know 

がここにXAMLでの私のストーリーボードからの抜粋です:

<Storyboard x:Key="DieStoryBoard" RepeatBehavior="Forever"> 

     <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="image1"> 

      <DiscreteObjectKeyFrame KeyTime="0"> 
       <DiscreteObjectKeyFrame.Value> 
        <Visibility>Visible</Visibility> 
       </DiscreteObjectKeyFrame.Value> 
      </DiscreteObjectKeyFrame> 

      <DiscreteObjectKeyFrame KeyTime="0:0:0.05"> 
       <DiscreteObjectKeyFrame.Value> 
        <Visibility>Collapsed</Visibility> 
       </DiscreteObjectKeyFrame.Value> 
      </DiscreteObjectKeyFrame> 

     </ObjectAnimationUsingKeyFrames> 


     <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="image2"> 

      <DiscreteObjectKeyFrame KeyTime="0:0:0.05"> 
       <DiscreteObjectKeyFrame.Value> 
        <Visibility>Visible</Visibility> 
       </DiscreteObjectKeyFrame.Value> 
      </DiscreteObjectKeyFrame> 

      <DiscreteObjectKeyFrame KeyTime="0:0:0.10"> 
       <DiscreteObjectKeyFrame.Value> 
        <Visibility>Collapsed</Visibility> 
       </DiscreteObjectKeyFrame.Value> 
      </DiscreteObjectKeyFrame> 

     </ObjectAnimationUsingKeyFrames> 


     <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="image3"> 

      <DiscreteObjectKeyFrame KeyTime="0:0:0.10"> 
       <DiscreteObjectKeyFrame.Value> 
        <Visibility>Visible</Visibility> 
       </DiscreteObjectKeyFrame.Value> 
      </DiscreteObjectKeyFrame> 

      <DiscreteObjectKeyFrame KeyTime="0:0:0.15"> 
       <DiscreteObjectKeyFrame.Value> 
        <Visibility>Collapsed</Visibility> 
       </DiscreteObjectKeyFrame.Value> 
      </DiscreteObjectKeyFrame> 

     </ObjectAnimationUsingKeyFrames> 
..... 

そして、いくつかの画像を、物事をより明確にします:

1234

+1

それぞれのケースでアニメーションを作成する方が簡単でしょうか? –

+0

@MaratKhasanov実際に実行できるかもしれませんが、36のケースがありますが、Seek()を使用して開始点を変更できるので、私は6. txが必要になります!私はまだ正しい方法があるかどうかを知りたいですが。 – Jesse

+0

あなたは最終的にそれを行う方法を考え出しましたか? –

答えて

2

これを試してみてください...

私の例は回転矢印で、指定角度で停止できます。

<Window.Resources> 
    <Storyboard x:Key="Storyboard1"> 
     <DoubleAnimationUsingKeyFrames  
      Storyboard.TargetProperty="(UIElement.RenderTransform). 
      (TransformGroup.Children)[2].(RotateTransform.Angle)" 
      Storyboard.TargetName="RightPanelButton1"> 
      <DiscreteDoubleKeyFrame KeyTime="0:0:0" Value="0.0"/> 
      <DiscreteDoubleKeyFrame KeyTime="0:0:1" Value="45.0"/> 
      <DiscreteDoubleKeyFrame KeyTime="0:0:2" Value="90.0"/> 
      <DiscreteDoubleKeyFrame KeyTime="0:0:3" Value="135.0"/> 
      <DiscreteDoubleKeyFrame KeyTime="0:0:4" Value="180.0"/> 
     </DoubleAnimationUsingKeyFrames> 
    </Storyboard> 
</Window.Resources> 



Storyboard st = ((Storyboard)this.Resources["Storyboard1"]); 

st.Begin(); 
st.Seek(new TimeSpan(0,0,2)); 
st.Pause(); 

Abbas Ahmed 
関連する問題