Multimedyaya Genel Bakış
Windows Presentation Foundation'daki (WPF) multimedya özellikleri, kullanıcı deneyimini geliştirmek için ses ve videoyu uygulamalarınızla tümleştirmenizi sağlar. Bu konu başlığında WPF'nin multimedya özellikleri tanıtılmaktadır.
Medya API'si
MediaElement ve MediaPlayer sınıfları ses veya video içeriği sunmak için kullanılır. Bu sınıflar etkileşimli olarak veya bir saatle denetlenebilir. Bu sınıflar, medya kayıttan yürütme için Microsoft Windows Medya Oynatıcı 10 denetiminde kullanabilir. Hangi sınıfı kullandığınız senaryoya bağlıdır.
MediaElement, Düzen tarafından desteklenen ve birçok denetimin içeriği olarak kullanılabilecek bir UIElement özelliktir. Genişletilebilir Uygulama biçimlendirme dili (XAML) ve kodda da kullanılabilir. MediaPlayerise nesneler için Drawing tasarlanmıştır ve düzen desteğinden yoksundur. kullanılarak MediaPlayer yüklenen medya yalnızca veya VideoDrawing kullanılarak veya ile DrawingContextdoğrudan etkileşim kurarak sunulabilir. MediaPlayer XAML'de kullanılamaz.
Nesneleri çizme ve çizim bağlamı hakkında daha fazla bilgi için bkz . Çizim Nesnelerine Genel Bakış.
Dekont
Medyayı uygulamanızla dağıtırken, bir medya dosyasını proje kaynağı olarak kullanamazsınız. Proje dosyanızda medya türünü Content
veya olarak ayarlamanız CopyToOutputDirectory
PreserveNewest
Always
gerekir.
Medya Kayıttan Yürütme Modları
Dekont
MediaPlayer Hem hem de MediaElement benzer üyelere sahiptir. Bu bölümdeki bağlantılar sınıf üyelerine başvurur MediaElement . Özellikle belirtilmediği sürece, sınıfında bağlı MediaElement üyeler de sınıfında bulunabilir MediaPlayer .
Windows Presentation Foundation'da (WPF) medya kayıttan yürütmeyi anlamak için, medyanın oynatılabildiği farklı modların anlaşılması gerekir. MediaPlayer Hem hem de MediaElement bağımsız mod ve saat modu olmak üzere iki farklı medya modunda kullanılabilir. Medya modu özelliği tarafından Clock belirlenir. olduğunda Clocknull
, medya nesnesi bağımsız moddadır. Clock null olmadığında, medya nesnesi saat modundadır. Varsayılan olarak, medya nesneleri bağımsız moddadır.
Bağımsız Mod
Bağımsız modda, medya içeriği medya kayıttan yürütmeyi destekler. Bağımsız mod aşağıdaki seçenekleri etkinleştirir:
Medyalar Uri doğrudan belirtilebilir.
Medya kayıttan yürütme doğrudan denetlenebilir.
Medyanın Position ve SpeedRatio özellikleri değiştirilebilir.
Medya, nesnenin MediaElement özelliği ayarlanarak veya nesnenin Source yöntemi çağrılarak MediaPlayerOpen yüklenir.
Medya kayıttan yürütmeyi bağımsız modda denetlemek için, medya nesnesinin denetim yöntemleri kullanılabilir. Kullanılabilir denetim yöntemleri : Play, Pause, Closeve Stop. içinMediaElement, bu yöntemleri kullanan etkileşimli denetim yalnızca olarak ayarlandığında ManualkullanılabilirLoadedBehavior. Medya nesnesi saat modundayken bu yöntemler kullanılamaz.
Bağımsız mod örneği için bkz . MediaElement'i Denetleme (Oynatma, Duraklatma, Durdurma, Ses Düzeyi ve Hız ).
Saat Modu
Saat modunda, medya kayıttan yürütmeyi MediaTimeline sürücüler. Saat modu aşağıdaki özelliklere sahiptir:
Medyalar Uri dolaylı olarak aracılığıyla MediaTimelineayarlanır.
Medya kayıttan yürütme saat tarafından denetlenebilir. Medya nesnesinin denetim yöntemleri kullanılamaz.
Medya, nesnenin MediaTimelineSource özelliği ayarlanarak, zaman çizelgesinden saat oluşturularak ve medya nesnesine saat atanarak yüklenir. Medya, içindeki bir MediaTimelineStoryboard öğesini hedeflediğinde MediaElementde bu şekilde yüklenir.
Medya kayıttan yürütmeyi ClockController saat modunda denetlemek için denetim yöntemleri kullanılmalıdır. A ClockController , özelliğinden ClockControllerMediaClockalınır. Saat modundayken bir MediaElement veya MediaPlayer nesnesinin denetim yöntemlerini kullanmayı denerseniz, bir InvalidOperationException oluşturulur.
Saatler ve zaman çizelgeleri hakkında daha fazla bilgi için bkz. Animasyona Genel Bakış.
Saat modu örneği için bkz . Görsel Taslak Kullanarak MediaElement'i Denetleme.
MediaElement Sınıfı
Uygulamaya medya eklemek, uygulamanın kullanıcı arabirimine (UI) denetim eklemek MediaElement ve eklemek istediğiniz medyaya bir Uri sağlamak kadar basittir. Microsoft Windows Medya Oynatıcı 10 tarafından desteklenen tüm medya türleri Windows Presentation Foundation'da (WPF) desteklenir. Aşağıdaki örnek, Genişletilebilir Uygulama Biçimlendirme Dili'nde (XAML) basit bir kullanımını MediaElement gösterir.
<!-- 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>
Bu örnekte medya yüklenir yüklenmez otomatik olarak oynatılır. Medya yürütmeyi bitirdikten sonra medya kapatılır ve tüm medya kaynakları serbest bırakılır (video belleği dahil). Bu nesnenin varsayılan davranışıdır MediaElement ve ve UnloadedBehavior özellikleri tarafından LoadedBehavior denetlenilir.
MediaElement Denetleme
LoadedBehavior ve UnloadedBehavior özellikleri sırasıyla veya false
olduğunda IsLoadedtrue
davranışını MediaElement denetler. MediaState Özellikler, medya kayıttan yürütme davranışını etkileyecek şekilde ayarlanır. Örneğin, varsayılan, Play varsayılan LoadedBehaviorUnloadedBehavior ise şeklindedirClose. Bu, yükleme ve ön kayıt tamamlandıktan hemen sonra MediaElement medyanın yürütülmeye başladığı anlamına gelir. Kayıttan yürütme tamamlandıktan sonra medya kapatılır ve tüm medya kaynakları serbest bırakılır.
LoadedBehavior Medya kayıttan yürütmeyi denetlemenin tek yolu ve UnloadedBehavior özellikleri değildir. Saat modunda, saat öğesini denetleyebilir MediaElement ve etkileşimli denetim yöntemlerinin ne zaman LoadedBehavior olduğu denetlenebilir Manual. MediaElement aşağıdaki öncelikleri değerlendirerek bu rekabeti kontrol için ele alır.
UnloadedBehavior. Medya kaldırıldığında yerinde. Bu, ile ilişkilendirilmiş olsa MediaClock bile tüm medya kaynaklarının varsayılan olarak yayımlanmasını MediaElementsağlar.
MediaClock. Medyada bir Clockolduğunda yerinde. Medya kaldırılırsa, MediaClock olduğu sürece UnloadedBehavior etkinleşir Manual. Saat modu her zaman öğesinin yüklenen davranışını MediaElementgeçersiz kılar.
LoadedBehavior. Medya yüklendiğinde yerinde.
Etkileşimli denetim yöntemleri. yerinde olduğundaLoadedBehavior.Manual Kullanılabilir denetim yöntemleri : Play, Pause, Closeve Stop.
MediaElement Görüntüleme
Görüntülemek MediaElement için, işlenecek içeriğe sahip ActualWidth olması gerekir ve içerik yüklenene kadar ve ActualHeight özellikleri sıfır olarak ayarlanır. Yalnızca ses içeriği için bu özellikler her zaman sıfırdır. Video içeriği için MediaOpened , olay oluşturulduktan ActualWidth sonra ve ActualHeight yüklenen medyanın boyutunu bildirir. Bu, medya yüklenene MediaElement kadar veya Height özellikleri ayarlanmadığı sürece Width kullanıcı arabiriminde (UI) herhangi bir fiziksel alan kaplamayacağı anlamına gelir.
Hem hem de WidthHeight özelliklerinin ayarlanması, medyanın için sağlanan alanı dolduracak şekilde esnetilmesine MediaElementneden olur. Medyanın özgün en boy oranını Width korumak için veya Height özelliği ayarlanmalıdır ancak her ikisini birden ayarlamamalıdır. Hem hem de WidthHeight özelliklerinin ayarlanması, medyanın istenmeyebilecek sabit bir öğe boyutunda sunulmasına neden olur.
Windows Presentation Foundation 'ın (WPF) medyanın ön kaydını oluşturabileceği sabit boyutlu bir öğeye sahip olmaktan kaçınmak için. Bu, veya Pauseolarak ayarlanarak LoadedBehaviorPlay yapılır. Bir Pause durumda, medya ön kayıt yapacak ve ilk kareyi sunacaktır. Play Bir durumda, medya ön kayıt yapacak ve oynatmaya başlayacaktır.
MediaPlayer Sınıfı
MediaElement Burada sınıfı bir çerçeve öğesi olduğundan, MediaPlayer sınıfı nesnelerde Drawing kullanılacak şekilde tasarlanmıştır. Çizim nesneleri, performans avantajları elde etmek için çerçeve düzeyi özelliklerinden ödün verebilirsiniz veya özelliklere ihtiyacınız Freezable olduğunda kullanılır. MediaPlayer uygulamalarınızda medya içeriği sağlarken bu özelliklerden yararlanmanızı sağlar. gibi MediaElement, MediaPlayer bağımsız veya saat modunda kullanılabilir, ancak nesnenin MediaElement kaldırılmış ve yüklenmiş durumlarını içermez. Bu, kayıttan yürütme denetimi karmaşıklığını MediaPlayerazaltır.
MediaPlayer'i Denetleme
MediaPlayer Durum bilgisi olmadığından, medya kayıttan yürütmeyi denetlemenin yalnızca iki yolu vardır.
Etkileşimli denetim yöntemleri. Bağımsız moddayken yerinde (
null
Clock özellik).MediaClock. Medyada bir Clockolduğunda yerinde.
MediaPlayer Görüntüleme
Teknik olarak, fiziksel gösterimi olmadığından görüntülenemiyor MediaPlayer . Ancak, sınıfını kullanarak içindeki Drawing medyayı VideoDrawing sunmak için kullanılabilir. Aşağıdaki örnekte medya görüntülemek için bir VideoDrawing kullanımı gösterilmektedir.
//
// 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();
Nesneler hakkında Drawing daha fazla bilgi için Bkz. Çizim Nesnelerine Genel Bakış.
Ayrıca bkz.
.NET Desktop feedback