国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C# 使用WPF 用MediaElement控件實現視頻循環播放

2019-10-29 21:06:05
字體:
來源:轉載
供稿:網友

 在WPF里用MediaElement控件,實現一個循環播放單一視頻的程序,同時可以控制視頻的播放、暫停、停止。

  一種方式,使用MediaElement.MediaEnded事件,在視頻播放結束后,自動重新播放;

  另一種方式,使用WPF定時器,在定時器事件里寫入視頻播放代碼。

  后者優點是可以控制循環時長,不必等到視頻播放結束就可以開始下一次播放,比如:同時啟動多個播放程序,使多個時長不同的視頻同時播放,無限循環,如果采用第一種方式,累計多次自動播放后,視頻內容就無法同步。

第一種方式:

XAML:    <MediaElement x:Name="mediaElement" HorizontalAlignment="Left" Height="261" VerticalAlignment="Top" Width="507"/>    <Button x:Name="btnPlay" Content="Play" HorizontalAlignment="Left" Margin="68,279,0,0" VerticalAlignment="Top" Width="75" Click="btnPlay_Click"/>    <Button x:Name="btnPause" Content="Pause" HorizontalAlignment="Left" Margin="170,279,0,0" VerticalAlignment="Top" Width="75" Click="btnPause_Click"/>    <Button x:Name="btnStop" Content="Stop" HorizontalAlignment="Left" Margin="295,279,0,0" VerticalAlignment="Top" Width="75" Click="btnStop_Click"/>
C#:    // 窗口加載事件    private void Window_Loaded(object sender, RoutedEventArgs e)    {      // 綁定視頻文件      mediaElement.Source = new Uri("D:/bird.mp4");      // 交互式控制      mediaElement.LoadedBehavior = MediaState.Manual;      // 添加元素加載完成事件 -- 自動開始播放      mediaElement.Loaded += new RoutedEventHandler(media_Loaded);       // 添加媒體播放結束事件 -- 重新播放      mediaElement.MediaEnded += new RoutedEventHandler(media_MediaEnded);      // 添加元素卸載完成事件 -- 停止播放      mediaElement.Unloaded += new RoutedEventHandler(media_Unloaded);    }    /*      元素事件     */    private void media_Loaded(object sender, RoutedEventArgs e)    {      (sender as MediaElement).Play();    }    private void media_MediaEnded(object sender, RoutedEventArgs e)    {      // MediaElement需要先停止播放才能再開始播放,      // 否則會停在最后一幀不動      (sender as MediaElement).Stop();      (sender as MediaElement).Play();    }    private void media_Unloaded(object sender, RoutedEventArgs e)    {      (sender as MediaElement).Stop();    }    /*      播放控制按鈕的點擊事件     */    private void btnPlay_Click(object sender, RoutedEventArgs e)    {      mediaElement.Play();    }    private void btnPause_Click(object sender, RoutedEventArgs e)    {      mediaElement.Pause();    }    private void btnStop_Click(object sender, RoutedEventArgs e)    {      mediaElement.Stop();    }

第二種方式:

  注:使用DispatcherTimer,需要添加System.Windows.Threading命名空間。

XAML:    <MediaElement x:Name="mediaElement" HorizontalAlignment="Left" Height="243" Margin="19,10,0,0" VerticalAlignment="Top" Width="394" LoadedBehavior ="Manual"/>    <Button x:Name="btnPlay" Content="Play" HorizontalAlignment="Left" Margin="52,270,0,0" VerticalAlignment="Top" Width="75" Click="btnPlay_Click"/>    <Button x:Name="btnPause" Content="Pause" HorizontalAlignment="Left" Margin="163,270,0,0" VerticalAlignment="Top" Width="75" Click="btnPause_Click"/>    <Button x:Name="btnStop" Content="Stop" HorizontalAlignment="Left" Margin="266,270,0,0" VerticalAlignment="Top" Width="75" Click="btnStop_Click"/>
C#:    DispatcherTimer timer = new DispatcherTimer(); // 定時器timer    int durTime = 5; // 視頻播放時長,也就是循環周期    // 窗口加載事件    private void Window_Loaded(object sender, RoutedEventArgs e)     {      mediaElement.Source = new Uri("D:/bird.mp4"); // 綁定視頻文件      mediaElement.Play(); // 設置啟動播放      timer.Interval = new TimeSpan(0, 0, 0, durTime); // 設置定時器重復周期      timer.Tick += new EventHandler(timerEvent); // 設置定時器事件      timer.Start(); // 啟動定時器    }    // 定時器事件     public void timerEvent(object sender, EventArgs e)    {      // MediaElement需要先停止播放才能再開始播放,      // 否則會停在最后一幀不動      mediaElement.Stop();       mediaElement.Play();     }    /*      播放控制按鈕的點擊事件     */    private void btnPlay_Click(object sender, RoutedEventArgs e)    {      mediaElement.Play(); // 開始播放      timer.Start(); // 重新啟動定時器    }    private void btnPause_Click(object sender, RoutedEventArgs e)    {      mediaElement.Pause(); // 暫停當前播放      timer.Stop(); // 停止定時器    }    private void btnStop_Click(object sender, RoutedEventArgs e)    {      mediaElement.Stop(); // 停止當前播放      timer.Stop(); // 停止定時器    }

總結

以上所述是小編給大家介紹的C# 使用WPF 用MediaElement控件實現視頻循環播放,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沭阳县| 松溪县| 龙山县| 达孜县| 天长市| 大足县| 双鸭山市| 泉州市| 洛宁县| 酒泉市| 秭归县| 辽源市| 改则县| 三河市| 康平县| 平泉县| 内乡县| 永安市| 柯坪县| 泸水县| 宝兴县| 齐河县| 元氏县| 石林| 柳江县| 林甸县| 临高县| 宣武区| 宁德市| 民县| 兖州市| 吴旗县| 兴宁市| 威信县| 天峻县| 双桥区| 铜鼓县| 西盟| 德令哈市| 乌苏市| 扶风县|