Technology Experience
.NET World

Ripetere all’infinito un filmato con XAML

Sto preparando una Window con WPF e XAML per mettere in attesa l’utente quando il software sta facendo qualcosa di piuttosto lungo, che potrebbe annoiarlo. L’operazione prevede la connessione ad un Web services con WCF per scaricare delle informazioni: la durata può variare dai 4 secondi in su, in base ai soliti parametri…qualità della connessione, velocità, etc. etc.

Ho trovato tra i miei CD una vecchia licenza di Corel R.A.V.E., un software di animazione vettoriale: l’ho installato ed in un’oretta ho creato una piccola animazione, partendo dal logo VivendoByte che vedete in alto a sinistra sulle pagine del mio blog. Come inserirlo  in una Windows? La risposta è semplice: è sufficiente usare la classe MediaElement.

Ma non basta: se volete che l’animazione si ripeti all’infinito, bisogna passare attraverso l’utilizzo della classe MediaTimeline, inserito tra i trigger del MediaElement. Riporto lo XAML per chiarezza:

<MediaElement Name="WaitingAnimation" MediaOpened="MediaElement_BufferingEnded"> <MediaElement.Triggers> <EventTrigger RoutedEvent="MediaElement.Loaded"> <EventTrigger.Actions> <BeginStoryboard> <Storyboard> <MediaTimeline Source="C:UsersIgorDesktopLogoVivendoByteAnimato.avi" Storyboard.TargetName="WaitingAnimation" RepeatBehavior="Forever" /> </Storyboard> </BeginStoryboard> </EventTrigger.Actions> </EventTrigger> </MediaElement.Triggers> </MediaElement>

Ho aggiunto un MediaElement chiamato WaitingAnimation. Notare che intercetto l’evento MediaOpened, che si scatena non appena WPF fa partire il filmato: nell’evento – non riportato – faccio partire l’esecuzione di un BackgroundWorker che in un thread separato fa tutto quello che deve fare. Poi lavoro con i trigger del MediaElement: non appena si scatena l’evento MediaElement.Loaded comincia l’esecuzione di una storyboard, che contiene un MediaTimeline che fa il play del filmato indicato nella proprietà Source. Notare l’utilizzo della proprietà RepeatBehavior – non disponibile nel MediaElement – che dice a WPF di ripartire daccapo con l’animazione quando essa arriva alla fine.

Fonte : http://msdn2.microsoft.com/en-us/library/ms741866.aspx

Technorati Tags:  

Send to Kindle

Igor Damiani

La sua passione per l'informatica nasce nella prima metà degli anni '80, quando suo padre acquistò un Texas Instruments TI-99. Da allora ha continuato a seguire l'evoluzione sia hardware che software avvenuta nel corso degli anni. E' un utente, un videogiocatore ed uno sviluppatore software a tempo pieno. Igor ha lavorato e lavora anche oggi con le più moderne tecnologie Microsoft per lo sviluppo di applicazioni: .NET Framework, XAML, Universal Windows Platform, su diverse piattaforme, tra cui spiccano Windows 10 piattaforme mobile. Numerose sono le app che Igor ha creato e pubblicato sul marketplace sotto il nome VivendoByte, suo personale marchio di fabbrica. Adora mantenere i contatti attraverso Twitter e soprattutto attraverso gli eventi delle community .NET.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.