Эта документация перемещена в архив и не поддерживается.

MediaElement - класс

Обновлен: Ноябрь 2007

Представляет элемент управления, содержащий аудио и/или видео.

Пространство имен:  System.Windows.Controls
Сборка:  PresentationFramework (в PresentationFramework.dll)
XMLNS для XAML: http://schemas.microsoft.com/winfx/xaml/presentation

[LocalizabilityAttribute(LocalizationCategory.NeverLocalize)]
public class MediaElement : FrameworkElement, 
	IUriContext
/** @attribute LocalizabilityAttribute(LocalizationCategory.NeverLocalize) */
public class MediaElement extends FrameworkElement implements IUriContext
public class MediaElement extends FrameworkElement implements IUriContext

При распространении файла мультимедиа с приложением нельзя использовать файл мультимедиа в качестве ресурса проекта. Вместо этого в файле проекта необходимо задать для типа мультимедиа значение Content, а для CopyToOutputDirectory — значение PreserveNewest или Always.

Элемент MediaElement можно использовать в двух различных режимах, в зависимости от того, что управляет элементом управления, а именно: в независимом режиме и в режиме синхронизации. При использовании в независимом режиме объект MediaElement аналогичен изображению, а свойство SourceURI можно указать напрямую. В режиме синхронизации элемент MediaElement можно рассматривать как цель анимации. Таким образом, он будет иметь соответствующие записи Timeline и Clock в дереве расчета времени. Дополнительные сведения о режимах мультимедиа см. в разделе Общие сведения о мультимедиа.

Пример управления элементом MediaElement в независимом режиме см. в разделе Практическое руководство. Управление элементом "MediaElement" (воспроизведение, пауза, остановка, громкость и скорость).

Пока событие MediaOpened не возникло, свойства ActualWidth и ActualHeight будут иметь нулевое значение, так как для определения окончательного размера и расположения элемента управления используется мультимедийное содержимое. Для содержимого, содержащего только звук, эти свойства всегда равны нулю.

Если элемент управления имеет фиксированные размеры, для него можно настроить свойство Width и/или Height. Однако для сохранения пропорций мультимедийного содержимого следует настраивать свойство Width или Height, но не одновременно.

В следующем примере показано управление воспроизведением мультимедиа с помощью MediaElement. В примере создается простой проигрыватель, позволяющий воспроизводить мультимедиа, включать паузу, остановку, прокрутку вперед и назад, а также настраивать громкость и скорость воспроизведения.

Следующий код создает пользовательский интерфейс.

ms611595.alert_note(ru-ru,VS.90).gifПримечание.

Для свойства LoadedBehavior объекта MediaElement должно быть установлено значение Manual, чтобы иметь возможность интерактивно останавливать, включать паузу и воспроизводить мультимедиа.

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  x:Class="SDKSample.MediaElementExample" >

  <StackPanel Background="Black">

    <!-- To interactively stop, pause, and play the media, the LoadedBehavior 
           property of the MediaElement must be set to "Manual". -->
    <MediaElement Source="media\numbers.wmv" Name="myMediaElement" 
     Width="450" Height="250" LoadedBehavior="Manual" UnloadedBehavior="Stop" Stretch="Fill" 
     MediaOpened="Element_MediaOpened" MediaEnded="Element_MediaEnded"/>

    <StackPanel HorizontalAlignment="Center" Width="450" Orientation="Horizontal">

      <!-- Play button. -->
      <Image Source="images\UI_play.gif" MouseDown="OnMouseDownPlayMedia" Margin="5" />

      <!-- Pause button. -->
      <Image Source="images\UI_pause.gif" MouseDown="OnMouseDownPauseMedia" Margin="5" />

      <!-- Stop button. -->
      <Image Source="images\UI_stop.gif" MouseDown="OnMouseDownStopMedia" Margin="5" />

      <!-- Volume slider. This slider allows a Volume range between 0 and 1. -->
      <TextBlock Foreground="White" VerticalAlignment="Center" Margin="5"  >Volume</TextBlock>
      <Slider Name="volumeSlider" VerticalAlignment="Center" ValueChanged="ChangeMediaVolume" 
       Minimum="0" Maximum="1" Value="0.5" Width="70"/>

      <!-- Volume slider. This slider allows a Volume range between 0 and 10. -->
      <TextBlock Foreground="White" Margin="5"  VerticalAlignment="Center">Speed</TextBlock>
      <Slider Name="speedRatioSlider" VerticalAlignment="Center" ValueChanged="ChangeMediaSpeedRatio" 
       Value="1" Width="70" />

      <!-- Seek to slider. Ths slider allows you to jump to different parts of the media playback. -->
      <TextBlock Foreground="White" Margin="5"  VerticalAlignment="Center">Seek To</TextBlock>
      <Slider Name="timelineSlider" Margin="5" ValueChanged="SeekToMediaPosition" Width="70"/>

    </StackPanel>
  </StackPanel>
</Page>


Приведенный ниже код реализует функциональные возможности элементов управления пользовательского интерфейса примера. Методы Play, Pause и Stop используются соответственно для осуществления воспроизведения, паузы и остановки мультимедиа. Изменение свойства Position объекта MediaElement позволяет включить прокрутку мультимедиа. Наконец, свойства Volume и SpeedRatio используются для настройки громкости и скорости воспроизведения.

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Data;
using System.Windows.Media;
using System.Windows.Input;

namespace SDKSample
{

   public partial class MediaElementExample : Page
   {

      // Play the media.
      void OnMouseDownPlayMedia(object sender, MouseButtonEventArgs args)
      {

         // The Play method will begin the media if it is not currently active or 
         // resume media if it is paused. This has no effect if the media is
         // already running.
         myMediaElement.Play();

         // Initialize the MediaElement property values.
         InitializePropertyValues();

      }

      // Pause the media.
      void OnMouseDownPauseMedia(object sender, MouseButtonEventArgs args)
      {

         // The Pause method pauses the media if it is currently running.
         // The Play method can be used to resume.
         myMediaElement.Pause();

      }

      // Stop the media.
      void OnMouseDownStopMedia(object sender, MouseButtonEventArgs args)
      {

         // The Stop method stops and resets the media to be played from
         // the beginning.
         myMediaElement.Stop();

      }

      // Change the volume of the media.
      private void ChangeMediaVolume(object sender, RoutedPropertyChangedEventArgs<double> args)
      {
         myMediaElement.Volume = (double)volumeSlider.Value;
      }

      // Change the speed of the media.
      private void ChangeMediaSpeedRatio(object sender, RoutedPropertyChangedEventArgs<double> args)
      {
         myMediaElement.SpeedRatio = (double)speedRatioSlider.Value;
      }

      // When the media opens, initialize the "Seek To" slider maximum value
      // to the total number of miliseconds in the length of the media clip.
      private void Element_MediaOpened(object sender, EventArgs e)
      {
         timelineSlider.Maximum = myMediaElement.NaturalDuration.TimeSpan.TotalMilliseconds;
      }

      // When the media playback is finished. Stop() the media to seek to media start.
      private void Element_MediaEnded(object sender, EventArgs e)
      {
         myMediaElement.Stop();
      }

      // Jump to different parts of the media (seek to). 
      private void SeekToMediaPosition(object sender, RoutedPropertyChangedEventArgs<double> args)
      {
         int SliderValue = (int)timelineSlider.Value;

         // Overloaded constructor takes the arguments days, hours, minutes, seconds, miniseconds.
         // Create a TimeSpan with miliseconds equal to the slider value.
         TimeSpan ts = new TimeSpan(0, 0, 0, 0, SliderValue);
         myMediaElement.Position = ts;
      }

      void InitializePropertyValues()
      {
         // Set the media's starting Volume and SpeedRatio to the current value of the
         // their respective slider controls.
         myMediaElement.Volume = (double)volumeSlider.Value;
         myMediaElement.SpeedRatio = (double)speedRatioSlider.Value;
      }

   }
}


Дополнительный код

Практическое руководство. Инициирование воспроизведение мультимедиа с помощью пользовательского событияВ этом примере показано, как синхронизировать воспроизведение мультимедиа с событием.
Как повторить воспроизведение мультимедиаВ этом примере показано, как воспроизводить мультимедиа неограниченно, т.е. — в бесконечном цикле.
Практическое руководство. Воспроизведение мультимедиа с анимациейВ данном примере показано, как одновременно воспроизвести мультимедиа и анимацию, используя классы MediaTimeline и DoubleAnimationUsingKeyFrames в одном классе Storyboard.
Практическое руководство. Управление элементом "MediaElement" с помощью объекта "Storyboard"В этом примере демонстрируется управление объектом MediaElement с помощью объекта MediaTimeline в объекте Storyboard.
Практическое руководство. Использование преобразования для элемента MediaElementВ этом примере показано использование преобразования RotateTransform в элементе MediaElement.
Как раскрасить область с видеоВ этом примере демонстрируется рисование области с мультимедиа. Одним из способов рисования области с мультимедиа является использование MediaElement вместе с VisualBrush. Используйте объект MediaElement для загрузки и воспроизведения файла мультимедиа, а затем используйте его, чтобы задать свойство Visual для VisualBrush. Затем можно использовать VisualBrush для закрашивания области с загруженным мультимедиа.

Любые открытые члены этого типа, объявленные как static (Shared в Visual Basic), являются потокобезопасными. Потокобезопасность членов экземпляров не гарантируется.

Windows Vista

Среды .NET Framework и .NET Compact Framework поддерживают не все версии каждой платформы. Поддерживаемые версии перечислены в разделе Требования к системе для .NET Framework.

.NET Framework

Поддерживается в версиях: 3.5, 3.0
Показ: