最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解析WPF實(shí)現(xiàn)音頻文件循環(huán)順序播放的解決方法

 更新時(shí)間:2013年05月15日 15:11:29   作者:  
本篇文章是對(duì)WPF實(shí)現(xiàn)音頻文件循環(huán)順序播放的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下

要做基于WPF的音頻文件循環(huán)順序播放首先要了解WPF下有哪些類是用于控制音頻的. 
WPF下主要有兩個(gè)音頻控制的類,這里做下比較:
    1.SoundPlayer  
    2.MediaPlayer
     派生MediaElement

一.SoundPlayer類  
    1.基于.NET FRAMEWORK 2.0;
    2.可播放WAV音頻文件; 
    3.只能播放一個(gè)文件,同時(shí)播放多個(gè)文件會(huì)后一個(gè)文件的播放操作會(huì)終止前一個(gè)播放的文件;
    4.不能對(duì)音量進(jìn)行控制;
二.MediaPlayer類
    1.基于WPF; 
    2.支持多種音頻文件;
    3.可以同時(shí)播放多個(gè)聲音;
    4.可以調(diào)整音量對(duì)音頻進(jìn)行控制;
    5.支持設(shè)置靜音和左右揚(yáng)聲器;
    6.可以控制音頻播放速度和獲取播放進(jìn)度和控制進(jìn)度;     

MediaElement類同MediaPlayer的功能類似,作為WPF頁(yè)面可用的標(biāo)簽是MediaPlayer的衍生; 
WPF下音頻文件循環(huán)順序播放的開發(fā)思路:
首先新建一個(gè)類繼承MediaElement;
這個(gè)類包含播放邏輯功能:
    1.讀取指定文件夾內(nèi)的所有音頻文件;
    2.將讀取的文件路徑放入列表;
    3.順序讀取列表中的文件名;
    4.播放音頻文件;
    5.播放完畢讀取下一個(gè)文件名直至列表結(jié)尾;
    6.播放音頻文件至列表結(jié)尾則轉(zhuǎn)制列表頭繼續(xù)播放;
在XAML界面加載這個(gè)類;
Window Load事件里執(zhí)行這個(gè)類的播放列表;

下面貼出了WPF下音頻文件循環(huán)順序播放的代碼:

復(fù)制代碼 代碼如下:

WPF界面代碼
 <Window x:Class="MediaApplication.MainWindow"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:md="clr-namespace:MediaApplication"
         Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">
     <StackPanel>
         <md:MediaManager x:Name="media"></md:MediaManager>
     </StackPanel>
  </Window>

復(fù)制代碼 代碼如下:

WPF界面CS代碼
 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.IO;
 using System.Collections.ObjectModel;
 using System.Configuration;

 namespace MediaApplication {
     /// <summary>
     /// Interaction logic for MainWindow.xaml
     /// </summary>
     public partial class MainWindow : Window {
         public MainWindow() {
             InitializeComponent();
         }

         private void Window_Loaded(object sender, RoutedEventArgs e) {
             this.media.PlayList();
         }

 
     }
 }

復(fù)制代碼 代碼如下:

MediaManager類
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Controls;
using System.IO;
using System.Configuration;
using System.Windows;
using System.Collections.ObjectModel;
namespace MediaApplication {
    public class MediaManager : MediaElement {
        public MediaManager() {
            try {
                GetAllDirList(new DirectoryInfo(ConfigurationManager.AppSettings["dir"].ToString()));
            } catch {
            }
        }
        public void PlayList() {
            if(files.Count > 0)
            {
                this.UnloadedBehavior = MediaState.Manual;
                this.LoadedBehavior = MediaState.Manual;
                this.MediaEnded += new RoutedEventHandler(media_MediaEnded);
                this.Source = new Uri( files[index], UriKind.RelativeOrAbsolute);
                this.Play();
            } 
        }
        private void GetAllDirList(DirectoryInfo directory) {           
            foreach(string filter in filters)
            {
                foreach (FileInfo file in directory.GetFiles(filter)) {
                    files.Add(file.FullName);
                }
            }
            foreach (DirectoryInfo subDirectory in directory.GetDirectories()) {
                GetAllDirList(subDirectory);
            }
        }
        private void media_MediaEnded(object sender, RoutedEventArgs e) {
            this.Source = new Uri( files[++index % files.Count], UriKind.RelativeOrAbsolute);
            this.Play();
        }
        private ObservableCollection<string> files = new ObservableCollection<string>();
        private int index = 0;
        private string[] filters = new string[] { "*.wav", "*.mp3" };
    }
}

相關(guān)文章

  • .net core 3.1在iis上發(fā)布的踩坑記錄

    .net core 3.1在iis上發(fā)布的踩坑記錄

    這篇文章主要給大家介紹了關(guān)于.net core 3.1在iis上發(fā)布的踩坑記錄,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用.net core具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • .NET 某券商論壇系統(tǒng)卡死問題分析

    .NET 某券商論壇系統(tǒng)卡死問題分析

    前幾個(gè)月有位朋友找到我,說他們的的web程序沒有響應(yīng)了,而且監(jiān)控發(fā)現(xiàn)線程數(shù)特別高,內(nèi)存也特別大,讓我?guī)兔匆幌略趺椿厥?現(xiàn)在回過頭來幾經(jīng)波折,回味價(jià)值太濃了,本文給大家分享.NET 某券商論壇系統(tǒng)卡死問題分析,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • 將文件上傳、下載(以二進(jìn)制流保存到數(shù)據(jù)庫(kù))實(shí)現(xiàn)代碼

    將文件上傳、下載(以二進(jìn)制流保存到數(shù)據(jù)庫(kù))實(shí)現(xiàn)代碼

    將文件以二進(jìn)制流的格式寫入數(shù)據(jù)庫(kù):首先獲得文件路徑,然后將文件以二進(jìn)制讀出保存在一個(gè)二進(jìn)制數(shù)組中具體請(qǐng)祥看本文,希望對(duì)你有所幫助
    2013-05-05
  • .Net項(xiàng)目在Docker容器中開發(fā)部署

    .Net項(xiàng)目在Docker容器中開發(fā)部署

    這篇文章介紹了.Net項(xiàng)目在Docker容器中開發(fā)部署的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • .Net使用Xunit工具進(jìn)行單元測(cè)試

    .Net使用Xunit工具進(jìn)行單元測(cè)試

    這篇文章介紹了.Net使用Xunit工具進(jìn)行單元測(cè)試的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 基于.net core微服務(wù)的另一種實(shí)現(xiàn)方法

    基于.net core微服務(wù)的另一種實(shí)現(xiàn)方法

    這篇文章主要給大家介紹了基于.net core微服務(wù)的另一種實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • asp.net 在處理向該請(qǐng)求提供服務(wù)所需的配置文件時(shí)出錯(cuò)

    asp.net 在處理向該請(qǐng)求提供服務(wù)所需的配置文件時(shí)出錯(cuò)

    遭遇:“說明: 在處理向該請(qǐng)求提供服務(wù)所需的配置文件時(shí)出錯(cuò)。請(qǐng)檢查下面的特定錯(cuò)誤詳細(xì)信息并適當(dāng)?shù)匦薷呐渲梦募?。”錯(cuò)誤
    2010-03-03
  • Asp.Net 程序錯(cuò)誤Runtime Error原因與解決

    Asp.Net 程序錯(cuò)誤Runtime Error原因與解決

    提示這個(gè),不管怎么改配置文件的設(shè)置都不行,下面是修正方法,大家可以試試。
    2010-03-03
  • Asp.Net中文本換行

    Asp.Net中文本換行

    Asp.Net中文本換行...
    2007-04-04
  • .NET 常用功能和代碼小結(jié)

    .NET 常用功能和代碼小結(jié)

    .NET常用功能和代碼,需要的朋友可以參考下。
    2009-11-11

最新評(píng)論

营山县| 德庆县| 高安市| 海宁市| 道孚县| 高阳县| 承德县| 邓州市| 长沙市| 石门县| 广汉市| 梓潼县| 舞钢市| 玉山县| 溧水县| 澜沧| 迭部县| 库伦旗| 滦南县| 隆德县| 六盘水市| 大城县| 苗栗市| 巴林右旗| 兴海县| 黄梅县| 通榆县| 塔河县| 华宁县| 兴化市| 建水县| 龙川县| 宝清县| 南和县| 汝州市| 沙雅县| 永嘉县| 工布江达县| 凭祥市| 交城县| 万安县|