亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-10-19 01:48:29 來源:腳本之家 閱讀:782 作者:mrr 欄目:編程語言

 在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控件實現視頻循環播放,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

通化县| 留坝县| 武鸣县| 抚顺县| 长沙市| 凯里市| 长垣县| 永城市| 郎溪县| 图木舒克市| 伊吾县| 翁源县| 泗阳县| 福海县| 宾阳县| 乌拉特后旗| 寻甸| 曲阜市| 美姑县| 靖安县| 焉耆| 寻乌县| 申扎县| 龙江县| 淮滨县| 米易县| 福贡县| 温宿县| 司法| 徐水县| 海城市| 大兴区| 星座| 呼图壁县| 阿克陶县| 绥宁县| 桐乡市| 江阴市| 汉阴县| 长乐市| 华阴市|