Разработка простого медиа - плеера в среде Visual Studio 2010 используя Silverlight
17.Добавим в эти события код:
private void PositionSlider_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { mediaElement1.Position = TimeSpan.FromSeconds(Convert.ToInt64 (PositionSlider.Value * mediaElement1.NaturalDuration.TimeSpan.TotalSeconds)); Timer.Text = string.Format("{0:00}:{1:00}", mediaElement1.Position.Minutes, mediaElement1.Position.Seconds); mediaElement1.Play(); } private void PositionSlider_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { mediaElement1.Pause(); }
Данный фрагмент кода устанавливает положение воспроизводимого меди-файла на основе элемента управления PositionSlider. Элементу управления Timer присваиваются значения минут, секунд воспоизводимого видео.
18.Добавим в событие UserControl_Loaded следующий фрагмент кода:
PositionSlider.Value = 0; PositionSlider.Minimum = 0; PositionSlider.Maximum = 1; PositionSlider.LargeChange = 0.10; PositionSlider.SmallChange = 0.01;
Теперь сделаем так, что бы значение элемента управления PositionSlider и Timer изменялось по ходу воспроизведения видео.
19.Подключаем пространство имен ( NameSpace ):
using System.Windows.Threading;
20.Создадим объект класса DispatcherTimer:
DispatcherTimer VideoTimer;
21.В событие UserControl_Loaded добавим следующие строчки кода:
VideoTimer = new DispatcherTimer(); VideoTimer.Interval = TimeSpan.FromMilliseconds(50); VideoTimer.Tick += new EventHandler(VideoTimer_Tick);
В данном фрагменте кода создается новый объект класса DispatcherTimer, после чего задается интервал выполнения события VideoTimer_Tick равный 50 миллисекундам ( TimeSpan.FromMilliseconds(50) ).
22.Теперь, создадим событие VideoTimer_Tick
void VideoTimer_Tick(object sender, EventArgs e) { if (mediaElement1.NaturalDuration.TimeSpan.TotalSeconds > 0) { Timer.Text = string.Format("{0:00}:{1:00}", mediaElement1.Position.Minutes, mediaElement1.Position.Seconds); PositionSlider.Value = mediaElement1.Position.TotalSeconds / mediaElement1.NaturalDuration.TimeSpan.TotalSeconds; } }
В данном фрагменте будет осуществляться синхронизация таймера ( Timer ) и полоски воспроизведения ( PositionSlider ) с воспроизводимым видео.
23.Создадим событие CurrentStateChanged элемента управления "MediaElement":
24.Добавим в событие CurrentStateChanged код:
private void mediaElement1_CurrentStateChanged(object sender, RoutedEventArgs e) { if (mediaElement1.CurrentState == MediaElementState.Playing) { VideoTimer.Start(); } else { VideoTimer.Stop(); } }
В данном фрагменте кода запускается или останавливается событие VideoTimer_Tick.
25.Запустим приложение. Откроется окно браузера и начнется воспроизведение видео-файла "test.wmv":