Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Met de multimediafuncties in Windows Presentation Foundation (WPF) kunt u audio en video integreren in uw toepassingen om de gebruikerservaring te verbeteren. In dit onderwerp worden de multimediafuncties van WPF geïntroduceerd.
Media-API
De MediaElement en MediaPlayer klassen worden gebruikt om audio- of video-inhoud te presenteren. Deze klassen kunnen interactief of met een klok worden bestuurd. Deze klassen kunnen worden gebruikt met het Microsoft Windows Media Player 10-besturingselement voor het afspelen van media. Welke klasse u gebruikt, is afhankelijk van het scenario.
MediaElement is een UIElement die wordt ondersteund door de indeling en kan als inhoud van veel besturingselementen worden gebruikt. Het is ook bruikbaar in Extensible Application Markup Language (XAML) en code. MediaPlayeraan de andere kant is ontworpen voor Drawing objecten en ontbreekt de indelingsondersteuning. Media geladen met behulp van een MediaPlayer kan alleen worden gepresenteerd met behulp van een VideoDrawing of door rechtstreeks te communiceren met een DrawingContext. MediaPlayer kan niet worden gebruikt in XAML.
Zie Overzicht van tekenobjecten voor meer informatie over tekenobjecten en tekencontext.
Opmerking
Wanneer u media distribueert met uw toepassing, kunt u geen mediabestand gebruiken als projectresource. In het projectbestand moet u in plaats daarvan het mediatype instellen op Content en CopyToOutputDirectory instellen op PreserveNewest of Always.
Afspeelmodi voor media
Opmerking
Beide MediaElement en MediaPlayer hebben vergelijkbare leden. De koppelingen in deze sectie verwijzen naar de MediaElement klasleden. Tenzij specifiek vermeld, kunnen leden die aan de MediaElement klas zijn gekoppeld ook in de MediaPlayer klas worden gevonden.
Voor meer informatie over het afspelen van media in Windows Presentation Foundation (WPF), is een goed begrip van de verschillende modi waarin media kunnen worden afgespeeld vereist. Beide MediaElement en MediaPlayer kunnen worden gebruikt in twee verschillende mediamodi, onafhankelijke modus en klokmodus. De mediamodus wordt bepaald door de Clock eigenschap. Wanneer Clock is null, bevindt het mediaobject zich in de onafhankelijke modus. Wanneer het Clock object niet null is, bevindt het mediaobject zich in de klokmodus. Mediaobjecten bevinden zich standaard in de onafhankelijke modus.
Onafhankelijke modus
In de onafhankelijke modus bepaalt de media-inhoud de mediweergave. De onafhankelijke modus schakelt de volgende opties in:
Uri Media kunnen rechtstreeks worden opgegeven.
Media afspelen kan rechtstreeks worden beheerd.
De eigenschappen van Position Media en SpeedRatio kunnen worden gewijzigd.
Media wordt geladen door de eigenschap van het MediaElement-object Source in te stellen of door de methode van het MediaPlayer-object Open aan te roepen.
Als u het afspelen van media in onafhankelijke modus wilt beheren, kunnen de besturingsmethoden van het mediaobject worden gebruikt. De beschikbare besturingsmethoden zijn Play, Pauseen CloseStop. Interactieve bediening van MediaElement met behulp van deze methoden is alleen beschikbaar wanneer LoadedBehavior is ingesteld op Manual. Deze methoden zijn niet beschikbaar wanneer het mediaobject zich in de klokmodus bevindt.
Zie Een MediaElement beheren (Afspelen, Onderbreken, Stoppen, Volume en Snelheid) voor een voorbeeld van onafhankelijke modus.
Klokmodus
In de klokmodus bestuurt een MediaTimeline het afspelen van media. Klokmodus heeft de volgende kenmerken:
Media's Uri worden indirect ingesteld via een MediaTimeline.
Mediaweergave kan via de klok worden bestuurd. De besturingsmethoden van het mediaobject kunnen niet worden gebruikt.
Media worden geladen door de MediaTimeline eigenschap van een Source object in te stellen, een klok uit de tijdlijn te maken, en de klok aan het media-object toe te wijzen. Media worden ook op deze manier geladen wanneer een MediaTimeline in een Storyboard gericht op een MediaElement is.
Als u het afspelen van media in de klokmodus wilt beheren, moeten de ClockController besturingsmethoden worden gebruikt. Een ClockController wordt verkregen uit de ClockController eigenschap van de MediaClock. Als u probeert de besturingsmethoden van een MediaElement of MediaPlayer object in de klokmodus te gebruiken, wordt er een InvalidOperationException gegenereerd.
Zie het animatieoverzicht voor meer informatie over klokken en tijdlijnen.
Zie Het besturen van een MediaElement met behulp van een Storyboard voor een voorbeeld van klokmodus.
MediaElement-klasse
Het toevoegen van media aan een toepassing is net zo eenvoudig als het toevoegen van een MediaElement controle aan de gebruikersinterface (UI) van de toepassing en het koppelen van een Uri aan de media die u wilt opnemen. Alle mediatypen die worden ondersteund door Microsoft Windows Media Player 10, worden ondersteund in Windows Presentation Foundation (WPF). In het volgende voorbeeld ziet u een eenvoudig gebruik van de MediaElement in Extensible Application Markup Language (XAML).
<!-- 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>
In dit voorbeeld wordt media automatisch afgespeeld zodra deze is geladen. Zodra de media is afgespeeld, wordt de media gesloten en worden alle mediabronnen vrijgegeven (inclusief videogeheugen). Dit is het standaardgedrag van het MediaElement object en wordt beheerd door de LoadedBehavior en UnloadedBehavior eigenschappen.
Een MediaElement beheren
De eigenschappen LoadedBehavior en UnloadedBehavior bepalen het gedrag van MediaElement wanneer IsLoadedtrue is of false, respectievelijk. De MediaState eigenschappen zijn ingesteld om het afspeelgedrag van media te beïnvloeden. De standaardwaarde LoadedBehavior is Play bijvoorbeeld en de standaardwaarde UnloadedBehavior is Close. Dit betekent dat zodra het MediaElement is geladen en de preroll is voltooid, de media beginnen af te spelen. Zodra het afspelen is voltooid, wordt media gesloten en worden alle mediabronnen vrijgegeven.
De LoadedBehavior en UnloadedBehavior eigenschappen zijn niet de enige manier om het afspelen van media te beheren. In de modus van de klok kan de klok de MediaElement besturen en hebben de interactieve besturingsmethoden controle wanneer de LoadedBehaviorManual is. MediaElement behandelt deze concurrentie voor controle door de volgende prioriteiten te evalueren.
UnloadedBehavior. Op zijn plaats wanneer de media zijn uitgeladen. Dit zorgt ervoor dat alle mediabronnen standaard worden vrijgegeven, zelfs wanneer een MediaClock is gekoppeld aan de MediaElement.
MediaClock. Op zijn plaats wanneer media een Clock heeft. Als de media wordt uitgeladen, heeft het MediaClock effect zolang UnloadedBehaviorManual is. De klokmodus overschrijft altijd het geladen gedrag van de MediaElement.
LoadedBehavior. In positie wanneer media worden geladen.
Interactieve besturingsmethoden. Op zijn plaats wanneer LoadedBehavior is Manual. De beschikbare besturingsmethoden zijn Play, Pauseen CloseStop.
Een MediaElement weergeven
Om een MediaElement weer te geven, moet het inhoud hebben om weer te geven en zullen de eigenschappen ActualWidth en ActualHeight op nul worden ingesteld totdat de inhoud is geladen. Voor alleen audio-inhoud zijn deze eigenschappen altijd nul. Zodra de MediaOpened gebeurtenis voor video-inhoud is gegenereerd, zullen de ActualWidth en ActualHeight de grootte van de geladen media melden. Dit betekent dat totdat media zijn geladen, de fysieke ruimte in de MediaElement gebruikersinterface (UI) niet in beslag neemt, tenzij de Width of Height eigenschappen zijn ingesteld.
Door zowel de Width-eigenschappen als de Height-eigenschappen in te stellen, zal de media zich uitrekken om het gebied dat is opgegeven voor de MediaElement op te vullen. Als u de oorspronkelijke hoogte-breedteverhouding van de media wilt behouden, moet de Width eigenschap of Height eigenschap worden ingesteld, maar niet beide. Wanneer u zowel de Width- als de Height-eigenschappen instelt, zal de media worden weergegeven in een vaste elementgrootte die misschien niet wenselijk is.
Om te voorkomen dat een element een vaste grootte heeft, kan Windows Presentation Foundation (WPF) de media vooraf afspelen. Dit wordt gedaan door de LoadedBehavior in te stellen op Play of Pause. In een Pause toestand worden de media voorgeladen en wordt het eerste frame weergegeven. In een Play status zal de media voorbereiden en beginnen met afspelen.
MediaPlayer-klasse
Wanneer de MediaElement klasse een frameworkelement is, is de MediaPlayer klasse ontworpen voor gebruik in Drawing objecten. Tekenobjecten worden gebruikt wanneer u functies op frameworkniveau kunt offeren om prestatievoordelen te krijgen of wanneer u functies nodig hebt Freezable . MediaPlayer hiermee kunt u profiteren van deze functies terwijl u media-inhoud in uw toepassingen levert. Net als MediaElement, MediaPlayer kan worden gebruikt in onafhankelijke of klokmodus, maar heeft niet de uitgepakte en geladen toestanden van het MediaElement object. Dit vermindert de complexiteit van de afspeelbediening van de MediaPlayer.
MediaPlayer beheren
Omdat MediaPlayer staatloos is, zijn er slechts twee manieren om het afspelen van media te beheren.
Interactieve besturingsmethoden. Plaats in onafhankelijke modus (
nullClock eigenschap).MediaClock. Op zijn plaats wanneer media een Clock heeft.
Een MediaPlayer weergeven
Technisch gezien kan een MediaPlayer niet worden weergegeven omdat deze geen fysieke weergave heeft. Het kan echter worden gebruikt om media in een Drawing met de VideoDrawing klasse te presenteren. In het volgende voorbeeld ziet u het gebruik van een VideoDrawing om media weer te geven.
//
// 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();
Zie het overzicht van tekenobjecten voor meer informatie over Drawing objecten.
Zie ook
.NET Desktop feedback