Воспроизведение фильма WPF при наведении курсора мыши

Есть ли способ с помощью WPF заставить видеоэлемент начать воспроизведение, когда пользователь наводит указатель мыши на элемент? Я хочу создать интерактивный цифровой ресурс и хочу, чтобы клип из фильма воспроизводился, когда наведите указатель мыши на элемент, чтобы щелкнуть его, чтобы перейти в раздел фильмов. Любая помощь будет здорово.

Все это будет содержаться в приложении Windows.


person Ironsides    schedule 19.01.2009    source источник


Ответы (2)


Если вы используете MediaElement для воспроизведения видео, просто прослушайте MouseEntered Событие и вызов Воспроизвести().

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

Вот пример:

В коде С#:

public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();
    }

    private void mediaElement1_MouseEnter(object sender, MouseEventArgs e)
    {
        mediaElement1.Play();
    }

    private void mediaElement1_MouseLeave(object sender, MouseEventArgs e)
    {
        mediaElement1.Stop();
    }

    private void mediaElement1_Loaded(object sender, RoutedEventArgs e)
    {
        mediaElement1.Pause();
    }
}

В XAML:

<Window x:Class="VideoTest.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Grid>
        <MediaElement Margin="12" 
                      Name="mediaElement1" 
                      Source="mediaFile.avi"
                      LoadedBehavior="Manual"                      
                      MouseEnter="mediaElement1_MouseEnter"
                      MouseLeave="mediaElement1_MouseLeave"
                      Loaded="mediaElement1_Loaded"
                      />
    </Grid>
</Window>
person Eclipse    schedule 19.01.2009

Обнаружена проблема с

<MediaElement Margin="12" 
                  Name="mediaElement1" 
                  Source="mediaFile.avi"
                  LoadedBehavior="Manual"                      
                  MouseEnter="mediaElement1_MouseEnter"
                  MouseLeave="mediaElement1_MouseLeave"
                  Loaded="mediaElement1_Loaded"
                  />

Кажется, это не нравится

Loaded="mediaElement1_Loaded"

Поэтому я изменил свой Initialize в своем коде, чтобы он содержал

mediaElement1.Pause();

И это работает просто отлично.

person Ironsides    schedule 20.01.2009