【问题标题】:WPF Play Movie on Mouse OverWPF 在鼠标悬停时播放电影
【发布时间】:2010-10-02 07:56:20
【问题描述】:

当用户将鼠标指针放在元素上时,有没有办法使用 WPF 让视频元素开始播放?我想制作一个交互式数字资源,并希望在鼠标悬停在元素上单击以将它们带到电影部分时播放电影剪辑。任何帮助都会很棒。

这将全部包含在 Windows 应用程序中。

【问题讨论】:

    标签: wpf video mouseover


    【解决方案1】:

    如果您使用 MediaElement 播放视频,只需监听 MouseEntered 事件并调用 Play()。

    注意:MediaElement 的 LoadedBehavior 属性必须设置为 Manual 才能以交互方式停止、暂停和播放媒体。

    这是一个例子:

    在 C# 代码隐藏中:

    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>
    

    【讨论】:

      【解决方案2】:

      发现问题

      <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();
      

      而且它工作得很好。

      【讨论】:

        猜你喜欢
        • 2015-09-16
        • 2023-04-05
        • 1970-01-01
        • 1970-01-01
        • 2018-07-31
        • 2011-07-23
        • 2017-05-06
        • 2016-06-03
        • 1970-01-01
        相关资源
        最近更新 更多