FrameworkElement.BeginStoryboard Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Inizia la sequenza di azioni contenute nello storyboard fornito.
Overload
BeginStoryboard(Storyboard) |
Inizia la sequenza di azioni contenute nello storyboard fornito. |
BeginStoryboard(Storyboard, HandoffBehavior) |
Inizia la sequenza di azioni contenute nello storyboard fornito, con le opzioni specificate per ciò che dovrebbe accadere se la proprietà è già animata. |
BeginStoryboard(Storyboard, HandoffBehavior, Boolean) |
Inizia la sequenza di azioni contenute nello storyboard fornito, con lo stato specificato per il controllo dell'animazione dopo l'avvio. |
BeginStoryboard(Storyboard)
Inizia la sequenza di azioni contenute nello storyboard fornito.
public:
void BeginStoryboard(System::Windows::Media::Animation::Storyboard ^ storyboard);
public void BeginStoryboard (System.Windows.Media.Animation.Storyboard storyboard);
member this.BeginStoryboard : System.Windows.Media.Animation.Storyboard -> unit
Public Sub BeginStoryboard (storyboard As Storyboard)
Parametri
- storyboard
- Storyboard
Storyboard da iniziare.
Esempio
Nell'esempio seguente viene recuperato un Storyboard dalle risorse e quindi viene eseguito tale Storyboard quando viene gestito un evento interno.
private void OnImage1Animate(object sender, RoutedEventArgs e)
{
Storyboard s;
s = (Storyboard)this.FindResource("RotateStoryboard");
this.BeginStoryboard(s);
}
Private Sub OnImage1Animate(ByVal sender As Object, ByVal e As RoutedEventArgs)
Dim s As Storyboard
s = CType(Me.FindResource("RotateStoryboard"), Storyboard)
Me.BeginStoryboard(s)
End Sub
Commenti
La maggior parte degli scenari di animazione tipici non usa questo metodo. In genere, si crea l'elemento Storyboard o BeginStoryboard nel markup e quindi si inseriscono come contenuto EventTrigger su un elemento. Quando viene attivato dall'evento, l'animazione viene quindi eseguita. La maggior parte degli aspetti di controllo di un Storyboard può essere risolta dalle proprietà esposte nel markup.
Per le firme che non usano il parametro isControllable
, o quando tale parametro viene specificato false
, gli orologi della sequenza temporale associati all'animazione vengono rimossi non appena l'animazione raggiunge il punto "Riempimento". Non è pertanto possibile riavviare l'animazione dopo l'esecuzione una sola volta. Il controllo di un'animazione richiede anche che lo storyboard abbia un direttiva x:Name o sia accessibile tramite riferimento nel codice.
Si applica a
BeginStoryboard(Storyboard, HandoffBehavior)
Inizia la sequenza di azioni contenute nello storyboard fornito, con le opzioni specificate per ciò che dovrebbe accadere se la proprietà è già animata.
public:
void BeginStoryboard(System::Windows::Media::Animation::Storyboard ^ storyboard, System::Windows::Media::Animation::HandoffBehavior handoffBehavior);
public void BeginStoryboard (System.Windows.Media.Animation.Storyboard storyboard, System.Windows.Media.Animation.HandoffBehavior handoffBehavior);
member this.BeginStoryboard : System.Windows.Media.Animation.Storyboard * System.Windows.Media.Animation.HandoffBehavior -> unit
Public Sub BeginStoryboard (storyboard As Storyboard, handoffBehavior As HandoffBehavior)
Parametri
- storyboard
- Storyboard
Storyboard da iniziare.
- handoffBehavior
- HandoffBehavior
Valore dell'enumerazione che descrive il comportamento da utilizzare se una proprietà descritta nello storyboard è già animata.
Esempio
Nell'esempio seguente viene recuperato un Storyboard dalle risorse e quindi viene eseguito tale Storyboard quando viene gestito un evento interno.
private void OnImage1Animate(object sender, RoutedEventArgs e)
{
Storyboard s;
s = (Storyboard)this.FindResource("RotateStoryboard");
this.BeginStoryboard(s);
}
Private Sub OnImage1Animate(ByVal sender As Object, ByVal e As RoutedEventArgs)
Dim s As Storyboard
s = CType(Me.FindResource("RotateStoryboard"), Storyboard)
Me.BeginStoryboard(s)
End Sub
Commenti
La maggior parte degli scenari di animazione tipici non usa questo metodo. In genere, si crea l'elemento Storyboard o BeginStoryboard nel markup e quindi si inseriscono come contenuto EventTrigger su un elemento. Quando viene attivato dall'evento, l'animazione viene quindi eseguita. La maggior parte degli aspetti di controllo di un Storyboard può essere risolta dalle proprietà esposte nel markup.
Per le firme che non usano il parametro isControllable
, o quando tale parametro viene specificato false
, gli orologi della sequenza temporale associati all'animazione vengono rimossi non appena l'animazione raggiunge il punto "Riempimento". Non è pertanto possibile riavviare l'animazione dopo l'esecuzione una sola volta. Il controllo di un'animazione richiede anche che lo storyboard abbia un direttiva x:Name o sia accessibile tramite riferimento nel codice.
Il comportamento di handoff può essere specificato come attributo di BeginStoryboard.
Uso di Compose HandoffBehavior
Quando si applica una Storyboard, AnimationTimelineo AnimationClock a una proprietà utilizzando l'ComposeHandoffBehavior, tutti gli oggetti Clock precedentemente associati a tale proprietà continuano a utilizzare le risorse di sistema; il sistema di temporizzazione non rimuove automaticamente gli orologi.
Per evitare problemi di prestazioni quando si applica un numero elevato di orologi usando Compose, è necessario rimuovere i clock di composizione dalla proprietà animata dopo il completamento. Esistono diversi modi per rimuovere un orologio:
Per rimuovere tutti gli orologi da una proprietà, utilizzare il metodo ApplyAnimationClock(DependencyProperty, AnimationClock) o BeginAnimation(DependencyProperty, AnimationTimeline) dell'oggetto animato. Specificare la proprietà animata come primo parametro e
null
come seconda. In questo modo tutti gli orologi di animazione vengono rimossi dalla proprietà .Per rimuovere un AnimationClock specifico da un elenco di orologi, utilizzare la proprietà Controller del AnimationClock per recuperare un ClockController, quindi chiamare il metodo Remove del ClockController. Questa operazione viene in genere eseguita nel gestore eventi Completed per un orologio. Si noti che solo gli orologi radice possono essere controllati da un ClockController; la proprietà Controller di un orologio figlio restituisce
null
. Si noti anche che l'evento Completed non viene generato se la durata effettiva dell'orologio è per sempre. In tal caso, l'utente deve determinare quando chiamare Remove.
Si tratta principalmente di un problema per le animazioni sugli oggetti che hanno una durata prolungata. Quando un oggetto viene sottoposto a Garbage Collection, anche i relativi orologi vengono disconnessi e sottoposto a Garbage Collection.
Per altre informazioni sugli oggetti clock, vedere Animation and Timing System Overview.
Si applica a
BeginStoryboard(Storyboard, HandoffBehavior, Boolean)
Inizia la sequenza di azioni contenute nello storyboard fornito, con lo stato specificato per il controllo dell'animazione dopo l'avvio.
public:
void BeginStoryboard(System::Windows::Media::Animation::Storyboard ^ storyboard, System::Windows::Media::Animation::HandoffBehavior handoffBehavior, bool isControllable);
public void BeginStoryboard (System.Windows.Media.Animation.Storyboard storyboard, System.Windows.Media.Animation.HandoffBehavior handoffBehavior, bool isControllable);
member this.BeginStoryboard : System.Windows.Media.Animation.Storyboard * System.Windows.Media.Animation.HandoffBehavior * bool -> unit
Public Sub BeginStoryboard (storyboard As Storyboard, handoffBehavior As HandoffBehavior, isControllable As Boolean)
Parametri
- storyboard
- Storyboard
Storyboard da iniziare.
- handoffBehavior
- HandoffBehavior
Valore dell'enumerazione che descrive il comportamento da utilizzare se una proprietà descritta nello storyboard è già animata.
- isControllable
- Boolean
Dichiara se l'animazione è controllabile (può essere sospesa) dopo l'avvio.
Commenti
La maggior parte degli scenari di animazione tipici non usa questo metodo. In genere, si crea l'elemento Storyboard o BeginStoryboard nel markup e quindi si inseriscono come contenuto EventTrigger su un elemento. Quando viene attivato dall'evento, l'animazione viene quindi eseguita. La maggior parte degli aspetti di controllo di un Storyboard può essere risolta dalle proprietà esposte nel markup.
Per le firme che non usano il parametro isControllable
, o quando tale parametro viene specificato false
, gli orologi della sequenza temporale associati all'animazione vengono rimossi non appena l'animazione raggiunge il punto "Riempimento". Non è pertanto possibile riavviare l'animazione dopo l'esecuzione una sola volta. Il controllo di un'animazione richiede anche che lo storyboard abbia un direttiva x:Name o sia accessibile tramite riferimento nel codice.
Il comportamento di handoff può essere specificato come attributo di BeginStoryboard.
Uso di Compose HandoffBehavior
Quando si applica una Storyboard, AnimationTimelineo AnimationClock a una proprietà utilizzando l'ComposeHandoffBehavior, tutti gli oggetti Clock precedentemente associati a tale proprietà continuano a utilizzare le risorse di sistema; il sistema di temporizzazione non rimuove automaticamente gli orologi.
Per evitare problemi di prestazioni quando si applica un numero elevato di orologi usando Compose, è necessario rimuovere i clock di composizione dalla proprietà animata dopo il completamento. Esistono diversi modi per rimuovere un orologio:
Per rimuovere tutti gli orologi da una proprietà, utilizzare il metodo ApplyAnimationClock(DependencyProperty, AnimationClock) o BeginAnimation(DependencyProperty, AnimationTimeline) dell'oggetto animato. Specificare la proprietà animata come primo parametro e
null
come seconda. In questo modo tutti gli orologi di animazione vengono rimossi dalla proprietà .Per rimuovere un AnimationClock specifico da un elenco di orologi, utilizzare la proprietà Controller del AnimationClock per recuperare un ClockController, quindi chiamare il metodo Remove del ClockController. Questa operazione viene in genere eseguita nel gestore eventi Completed per un orologio. Si noti che solo gli orologi radice possono essere controllati da un ClockController; la proprietà Controller di un orologio figlio restituisce
null
. Si noti anche che l'evento Completed non viene generato se la durata effettiva dell'orologio è per sempre. In tal caso, l'utente deve determinare quando chiamare Remove.
Si tratta principalmente di un problema per le animazioni sugli oggetti che hanno una durata prolungata. Quando un oggetto viene sottoposto a Garbage Collection, anche i relativi orologi vengono disconnessi e sottoposto a Garbage Collection.
Per altre informazioni sugli oggetti clock, vedere Animation and Timing System Overview.