2013-02-04 33 views
0

我正在嘗試一個簡單的動畫,在彼此頂部滑動的問題是,我不知道什麼時候設置幻燈片放映的新圖片的可見性。我不想在動畫開始之前在頂部顯示圖片。序列就像這樣,屏幕上有一張拉伸的圖片,然後另一幅尺寸相同的圖片滑入前一張圖片的頂部。與舊圖片相比,新圖片將具有更高的Z-index。我設置了一個故事板,並將新圖片的可見性隱藏起來。那麼,我什麼時候可以看到新圖片呢?撥打StoryBoard.Begin(MyNewPicture)之前是否正確?因此,它成爲WPF:什麼是正確的方式,使一個UIElement正確的時刻,當一個故事板開始

//create picture object 
    //... 
    MyNewPicture.Visibility = Visiblity.Hidden; 
    //do some intialisation, and create StoryBoard 
    //... 
    MyNewPicture.Visibility = Visibility.Visible; 
    MyStoryBoard.Begin(MyNewPicture);` 

這工作我快的計算機上,但我不知道,如果我一個緩慢的計算機上運行它,如果有某種性能減慢/屏幕滯後等,將使其新當動畫開始之前,圖片在其變得可見時會覆蓋它下面的圖片?這會在屏幕上產生不希望的閃爍。

或者我應該把可見性作爲動畫的一部分嗎?請看看這個answer到其他人以前稍微類似的問題。我應該在Xaml中使用ObjectAnimationUsingKeyFrames嗎?請注意,一旦動畫開始,新圖片應該可見(永遠),在我的情況下不需要切換可視性。我只想讓新圖片在動畫開始時而不是動畫之前可見(否則會阻止前一張圖片)。

+0

您還可以爲圖片的不透明度屬性(從0到100)設置動畫,因此您不必使用ObjectAnimationUsingKeyFrames。我會建議改變故事板中的可見性/不透明度,這應該防止閃爍。 –

+0

我試圖滑動圖片,所以它正在移動:)但是,是的,這是一個很好的建議 –

+0

使用BeginTime(TimeLine屬性),您可以先將不透明度設置爲100,然後移動圖片。 –

回答

1

如果你想改變Visibility的動畫,你必須使用ObjectAnimationUsingKeyFrames

<Storyboard x:Key="StartPicture"> 
     <ObjectAnimationUsingKeyFrames Duration="0:0:0.1" Storyboard.TargetProperty="Visibility"> 
      <ObjectKeyFrameCollection> 
       <DiscreteObjectKeyFrame Value="{x:Static Visibility.Visible}" KeyTime="0:0:0"></DiscreteObjectKeyFrame> 
      </ObjectKeyFrameCollection> 
     </ObjectAnimationUsingKeyFrames> 
     <DoubleAnimation BeginTime="00:00:00.1" Storyboard.TargetProperty="Property" To="Value" /> 
    </Storyboard> 

你也可以設置動畫的不透明度,從0到100,使畫面可見:

<Storyboard 
     <DoubleAnimation Storyboard.TargetProperty="Opacity" To="100" Duration="0:0:0.1" /> 
     <DoubleAnimation BeginTime="0:0:0.1" Storyboard.TargetProperty="PropertyToAnimate" To="Value" /> 
    </Storyboard> 

通過這種方式,首先將不透明度屬性設置爲100(100毫秒),之後(其餘爲BeginTime="0:0:0.1")。

+0

我希望有一個更簡單的方法 –

相關問題