Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как оживить Slider, отслеживающий позицию видео файла? / 8 сообщений из 8, страница 1 из 1
02.01.2012, 01:50
    #37601317
OlegDnepr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оживить Slider, отслеживающий позицию видео файла?
Help! Перепробовал около десяти вариантов плееров – с триггерами, без триггеров, смешанные варианты управления – везде прекрасно работали только кнопки “Play” “Pause” и “Stop”. А вот Slider всегда и везде оставался стабильно мёртвым. Не помогали ни DispatcherTimer, ни Storyboard ни прочие прибамбасы. Редактору постоянно что-то не нравилось. Где-то рядом была «собака зарыта». Но для моей работы позарез нужен именно Slider, который бы динамически отслеживал ход воспроизведения видео файла и при нажатии мышью позволял бы менять позицию видео файла. Из всех опробованных мною вариантов плееров, я выбрал самый простейший, где чётко работают три основные команды “Play” “Pause” и “Stop” и к которому теперь очень хотелось бы добавить реально функционирующий Slider. Тому, кто знает, как это сделать буду очень благодарен! У меня стоит VS Ultimate 2010, язык C#.
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="275" Width="491" >
    <Canvas Height="240" Name="canvas1" Width="444">
        <MediaElement x:Name="Video" Canvas.Left="72" Canvas.Top="12" Height="158"  Width="301" Source="D:\EXP\MyVideo8\WpfApplication8\bin\Debug\Become happier.avi" LoadedBehavior="Manual" UnloadedBehavior="Manual" />
        <Button x:Name="Play"  Content="Play" Canvas.Left="112" Canvas.Top="180" Height="23" Width="74" Click="Play_Click" />
        <Button x:Name="Pause"  Content="Pause" Canvas.Left="192" Canvas.Top="180" Height="23" Width="74" Click="Pause_Click" />
        <Button x:Name="Stop" Content="Stop" Canvas.Left="272" Canvas.Top="180" Height="23" Width="74" Click="Stop_Click" />
        <Slider x:Name="TimerSlider" Canvas.Left="26" Canvas.Top="209" Height="27" Width="398"/>
    </Canvas>
</Window>


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Media.Animation;
using System.Windows.Threading;

namespace WpfApplication1
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {

        public MainWindow()
        {
            InitializeComponent();
        }

        private void Play_Click(object sender, RoutedEventArgs e)
        {
            Video.Play();
        }

        private void Pause_Click(object sender, RoutedEventArgs e)
        {
            Video.Pause();
        }

        private void Stop_Click(object sender, RoutedEventArgs e)
        {
            Video.Stop();
        }
        
    }
}
...
Рейтинг: 0 / 0
03.01.2012, 16:27
    #37601476
Руки-крюки
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оживить Slider, отслеживающий позицию видео файла?
OlegDnepr,

WPF или Silverlight?
...
Рейтинг: 0 / 0
03.01.2012, 20:07
    #37601628
OlegDnepr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оживить Slider, отслеживающий позицию видео файла?
WPF, C#, VS Ultimate 2010
...
Рейтинг: 0 / 0
03.01.2012, 23:48
    #37601729
Руки-крюки
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оживить Slider, отслеживающий позицию видео файла?
OlegDnepr,

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="275" Width="491" >
    <Canvas Height="240" Name="canvas1" Width="444">
        <MediaElement x:Name="Video" Canvas.Left="72" Canvas.Top="12" Height="158"  Width="301" Source="D:\Video\2.dnja.2011.O.DVDRip.1400MB_.avi" LoadedBehavior="Manual" UnloadedBehavior="Manual" />
        <Button x:Name="Play"  Content="Play" Canvas.Left="112" Canvas.Top="180" Height="23" Width="74" Click="Play_Click" />
        <Button x:Name="Pause"  Content="Pause" Canvas.Left="192" Canvas.Top="180" Height="23" Width="74" Click="Pause_Click" />
        <Button x:Name="Stop" Content="Stop" Canvas.Left="272" Canvas.Top="180" Height="23" Width="74" Click="Stop_Click" />
        <Slider x:Name="TimerSlider" Canvas.Left="26" Canvas.Top="209" Height="27" Width="398" ValueChanged="TimerSlider_ValueChanged" Minimum="0" Maximum="1" />
    </Canvas>
</Window>



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
using System;
using System.Windows;

namespace WpfApplication1
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {

        public MainWindow()
        {
            InitializeComponent();
        }

        private void Play_Click(object sender, RoutedEventArgs e)
        {
            Video.Play();
        }

        private void Pause_Click(object sender, RoutedEventArgs e)
        {
            Video.Pause();
        }

        private void Stop_Click(object sender, RoutedEventArgs e)
        {
            Video.Stop();
        }

        private void TimerSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
        {
            TimeSpan newPosition = TimeSpan.FromSeconds(Video.NaturalDuration.TimeSpan.TotalSeconds * e.NewValue);
            Video.Position = newPosition;
        }
    }
}



Для лучшего эффекта привяжите Video.NaturalDuration к Slider.Maximum и Slider.Value к Video.Position. Воспользовавшись конвертером из double в TimeSpan и обратно.
...
Рейтинг: 0 / 0
03.01.2012, 23:51
    #37601737
Руки-крюки
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оживить Slider, отслеживающий позицию видео файла?
И верните вполне вменяемый вариант со StoryBoard'ми.
...
Рейтинг: 0 / 0
05.01.2012, 15:22
    #37603128
OlegDnepr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оживить Slider, отслеживающий позицию видео файла?
Приемлемое решение здесь:
http://www.cyberforum.ru/wpf-silverlight/thread421374.html
...
Рейтинг: 0 / 0
05.01.2012, 21:16
    #37603499
Руки-крюки
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оживить Slider, отслеживающий позицию видео файла?
OlegDnepr,

Там рогатое решение
...
Рейтинг: 0 / 0
05.01.2012, 21:17
    #37603500
Руки-крюки
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оживить Slider, отслеживающий позицию видео файла?
Руки-крюкиOlegDnepr,

Там рогатое решение

В плане слайдера.
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как оживить Slider, отслеживающий позицию видео файла? / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]