Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Med multimediefunktionerna i Windows Presentation Foundation (WPF) kan du integrera ljud och video i dina program för att förbättra användarupplevelsen. Det här avsnittet beskriver multimediefunktionerna i WPF.
Media-API
Klasserna MediaElement och MediaPlayer används för att presentera ljud- eller videoinnehåll. Dessa klasser kan styras interaktivt eller med en klocka. Dessa klasser kan användas på Microsoft Windows Media Player 10-kontrollen för medieuppspelning. Vilken klass du använder beror på scenariot.
MediaElement är en UIElement som stöds av layouten och kan användas som innehåll i många kontroller. Det kan också användas i XAML (Extensible Application Markup Language) samt kod. MediaPlayer, å andra sidan, är utformad för Drawing objekt och saknar layoutstöd. Media som läses in med hjälp av en MediaPlayer kan bara visas med hjälp av en VideoDrawing eller genom att direkt interagera med en DrawingContext. MediaPlayer kan inte användas i XAML.
Mer information om ritade objekt och ritningskontext finns i Översikt över ritade objekt.
Anmärkning
När du distribuerar media med ditt program kan du inte använda en mediefil som en projektresurs. I projektfilen måste du i stället ange medietypen till Content och ange CopyToOutputDirectory till PreserveNewest eller Always.
Medieuppspelningslägen
Anmärkning
Både MediaElement och MediaPlayer har liknande medlemmar. Länkarna i det här avsnittet refererar till MediaElement klassmedlemmarna. Om inget specifikt anges kan medlemmar som är länkade till i MediaElement klassen också hittas i MediaPlayer klassen.
För att förstå medieuppspelning i Windows Presentation Foundation (WPF) krävs en förståelse för de olika lägen där media kan spelas upp. Både MediaElement och MediaPlayer kan användas i två olika medielägen, oberoende läge och klockläge. Medieläget bestäms av Clock egenskapen . När Clock är nullär medieobjektet i oberoende läge. När Clock inte är null är medieobjektet i klockläge. Medieobjekt är som standard i oberoende läge.
Oberoende läge
I oberoende läge styrs medieuppspelning av medieinnehåll. Oberoende läge aktiverar följande alternativ:
Media kan Uri anges direkt.
Medieuppspelning kan styras direkt.
Medias Position och SpeedRatio egenskaper kan ändras.
Media läses in genom att antingen ange MediaElement objektets Source egenskap eller genom att anropa MediaPlayer objektets Open -metod.
Om du vill styra medieuppspelning i oberoende läge kan medieobjektets kontrollmetoder användas. De tillgängliga kontrollmetoderna är Play, Pause, Closeoch Stop. För MediaElementär interaktiv kontroll med dessa metoder endast tillgänglig när är inställt på LoadedBehaviorManual. Dessa metoder är inte tillgängliga när medieobjektet är i klockläge.
Se Kontrollera ett MediaElement (Spela upp, Pausa, Stoppa, Volym och Hastighet) för ett exempel på oberoende läge.
Klockläge
I klockläge styr en MediaTimeline medieuppspelningen. Klockläget har följande egenskaper:
Medias Uri anges indirekt via en MediaTimeline.
Medieuppspelning kan styras av klockan. Det går inte att använda medieobjektets kontrollmetoder.
Media läses in genom att ange ett MediaTimeline objekts Source egenskap, skapa klockan från tidslinjen och tilldela klockan till medieobjektet. Media läses också in på det här sättet när en MediaTimeline inuti en Storyboard riktar sig mot en MediaElement.
För att styra medieuppspelningen i klockläge måste kontrollmetoderna ClockController användas. ClockController hämtas från egenskapen ClockController för MediaClock. Om du försöker använda kontrollmetoderna för antingen ett MediaElement-objekt eller ett MediaPlayer-objekt i klockläge, kommer en InvalidOperationException att utlösas.
Mer information om klockor och tidslinjer finns i Översikt över animering .
Se Kontrollera ett MediaElement med hjälp av en storyboard för ett exempel på klockläge.
MediaElement-klass
Att lägga till media i ett program är lika enkelt som att lägga till en MediaElement kontroll i användargränssnittet (UI) för programmet och tillhandahålla ett Uri till det media som du vill inkludera. Alla medietyper som stöds av Microsoft Windows Media Player 10 stöds i Windows Presentation Foundation (WPF). I följande exempel visas en enkel användning av MediaElement XAML (Extensible Application Markup Language).
<!-- This page shows a simple usage of MediaElement -->
<Page x:Class="MediaElementExample.SimpleUsage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="SimpleUsage"
    >
  <StackPanel Margin="20">
    <MediaElement Source="media/numbers-aud.wmv" />
  </StackPanel>
</Page>
I det här exemplet spelas media upp automatiskt så snart det läses in. När mediet har spelats färdigt stängs det, och alla medieresurser frigörs, inklusive videominne. Detta är standardbeteendet för MediaElement objektet och styrs av LoadedBehavior egenskaperna och UnloadedBehavior .
Kontrollera ett MediaElement
Egenskaperna LoadedBehavior och UnloadedBehavior styr beteendet för MediaElement när IsLoaded är true respektive false. Egenskaperna MediaState är inställda på att påverka medieuppspelningsbeteendet. Standardvärdet LoadedBehavior är Play till exempel och standardvärdet UnloadedBehavior är Close. Det innebär att så snart MediaElement har lästs in och prerullen är klar, börjar mediefilen spelas upp. När uppspelningen är klar stängs media och alla medieresurser släpps.
Egenskaperna LoadedBehavior och UnloadedBehavior är inte det enda sättet att styra medieuppspelning. I klockläge kan klockan styra MediaElement och de interaktiva kontrollmetoderna har kontroll när LoadedBehavior är Manual. MediaElement hanterar denna konkurrens om kontroll genom att utvärdera följande prioriteringar.
UnloadedBehavior. På plats när mediet lossas. Detta säkerställer att alla medieresurser släpps som standard, även när en MediaClock är associerad med MediaElement.
MediaClock. På plats när media har en Clock. Om mediet lastas ur kommer det att gälla så länge som MediaClock är UnloadedBehavior. Klockläget åsidosätter alltid det inlästa beteendet för MediaElement.
LoadedBehavior. På plats när media är laddad.
Interaktiva kontrollmetoder. På plats när LoadedBehavior är Manual. De tillgängliga kontrollmetoderna är Play, Pause, Closeoch Stop.
Visa ett MediaElement
För att visa en MediaElement måste den ha innehåll att återges, och dess ActualWidth och ActualHeight egenskaper är inställda på noll tills innehållet läses in. För endast ljudinnehåll är dessa egenskaper alltid noll. När händelsen MediaOpened har aktiverats för videoinnehåll, rapporterar ActualWidth och ActualHeight storleken på det inlästa mediet. Det innebär att tills mediet har laddats in, tar MediaElement inte upp något fysiskt utrymme i användargränssnittet (UI) om inte egenskaperna Width eller Height har angetts.
Om du ställer in både Width egenskaperna och Height kommer mediet att sträcka sig för att fylla det angivna området för MediaElement. För att bevara mediets ursprungliga proportioner ska antingen Width egenskapen eller Height anges men inte båda. Om du ställer in både Width egenskaperna och Height visas mediet i en fast elementstorlek som kanske inte är önskvärd.
För att undvika att ha ett element med fast storlek kan Windows Presentation Foundation (WPF) förladda mediet. Detta görs genom att ange LoadedBehavior antingen Play eller Pause. I ett Pause tillstånd, förbereds mediet och visar den första bildrutan. I ett Play tillstånd kommer media att förberedas och börja spela.
MediaPlayer-klass
När klassen MediaElement är ett ramverkselement MediaPlayer är klassen utformad för att användas i Drawing objekt. Ritade objekt används när du kan offra funktioner på ramverksnivå för att få prestandafördelar eller när du behöver Freezable funktioner. MediaPlayer gör att du kan dra nytta av dessa funktioner samtidigt som du tillhandahåller medieinnehåll i dina program. Som MediaElement, MediaPlayer kan användas i oberoende läge eller klockläge men har MediaElement inte objektets oladdade och inlästa tillstånd. Detta minskar uppspelningskontrollkomplexiteten för MediaPlayer.
Kontrollera MediaPlayer
Eftersom MediaPlayer det är tillståndslöst finns det bara två sätt att styra medieuppspelning.
Interaktiva kontrollmetoder. På plats i fristående läge (
nullClock egenskapsinställning).MediaClock. På plats när media har en Clock.
Visa en MediaPlayer
Tekniskt sett går det inte att visa en MediaPlayer eftersom den inte har någon fysisk representation. Det kan dock användas för att presentera media i en Drawing med hjälp av VideoDrawing klassen. I följande exempel visas användningen av ett VideoDrawing för att visa media.
//
// Create a VideoDrawing.
//
MediaPlayer player = new MediaPlayer();
player.Open(new Uri(@"sampleMedia\xbox.wmv", UriKind.Relative));
VideoDrawing aVideoDrawing = new VideoDrawing();
aVideoDrawing.Rect = new Rect(0, 0, 100, 100);
aVideoDrawing.Player = player;
// Play the video once.
player.Play();
Mer information om objekt finns i Drawing.
Se även
.NET Desktop feedback