2.5.2 多媒体功能的实现
多媒体功能就是指用户可以通过拖动添加多媒体文件,播放或暂停多媒体文件。要想添加音视频文件,需在资源管理器中选中一个多媒体文件,比如WMV或MP3格式的文件,拖动到相应的音视频区域上面,将触发其容器Grid的Drop事件。以视频为例,当拖动一个WMV到视频窗口上时,其触发的Drop事件处理代码如下所示。
代码位置:见光盘中本章源代码的Controls\ AddNewFriendControl.xaml.cs文件。
01 private void videoGrid_Drop(object sender, DragEventArgs e) 02 { 03 string[] fileNames = e.Data.GetData //获取拖放的文件名数组 04 (DataFormats.FileDrop, true) as string[]; 05 string[] allowableFiles = { ".wmv", ".avi" }; 06 if (fileNames.Length > 0) 07 { 08 FileInfo f = new FileInfo(fileNames[0]); 09 //如果文件类型为wmv或avi,则将文件路径赋给MediaElement对象 10 if (allowableFiles.Contains(f.Extension.ToLower())) 11 { 12 friendContent.VideoUrl = fileNames[0]; 13 videoSrc.Source = null; 14 videoSrc.Source = new Uri(friendContent.VideoUrl); 15 MessageBox.Show("已经成功的添加了一个视频\r\n" + 16 "可以通过所提供的按钮来控制视频!"); 17 } 18 } 19 //确保已经处理了事件,那么将不会调用基类的方法处理拖动操作 20 e.Handled = true; 21 }
● 第03~04行代码获取拖动的文件格式。
● 第05行代码指定拖动目标所允许的格式为wmv和avi。
● 第06~10行判断拖动到目标的格式是否为所允许放置的格式。
● 第12~19行代码,将允许放置的文件格式的文件中的第1个文件赋给MediaElement对象的Source。并且将其指定给friendContent的VideoUri属性。最后将e.Handled属性设置为true,表示已经处理了拖放放置操作。
音频部分的拖放操作与视频类似,在Grid的Drop事件中,通过判断拖入的是否是WMA或MP3文件,将文件路径赋给MediaElement对象,代码如下所示。
代码位置:见光盘中本章源代码的Controls\ AddNewFriendControl.xaml.cs文件。
01 private void musicGrid_Drop(object sender, DragEventArgs e) 02 { 03 string[] fileNames = //获取拖放操作的文件名数组 04 e.Data.GetData(DataFormats.FileDrop, true) as string[]; 05 string[] allowableFiles = { ".wma", ".mp3" }; 06 if (fileNames.Length > 0) 07 { //如果文件名存在 08 FileInfo f = new FileInfo(fileNames[0]); 09 if (allowableFiles.Contains(f.Extension.ToLower())) 10 { //判断指定的文件格式是否是所允许放置的格式 11 friendContent.MusicUrl = fileNames[0]; 12 musicSrc.Source = new Uri(friendContent.MusicUrl); 13 //拖放操作后,将文件路径赋给MediaElement并设置文本和图片的显示 14 txtMusic.Visibility = Visibility.Hidden; 15 imgMusic.Visibility = Visibility.Visible; 16 MessageBox.Show("已经成功的添加了一个音频文件\r\n" + 17 "可以使用所提供的按钮来控制音频"); 18 } 19 } 20 //确保已经处理了事件,那么将不会调用基类的方法处理拖动操作 21 e.Handled = true; 22 }
● 第03~09行代码获取拖放的文件名数组,判断指定的扩展名是否是允许的扩展名,即是否是MP3或WMA文件。
● 第11~22行代码,将允许的第1个文件赋给friendContent的MusicUrl属性,同时作为MediaElement的Source属性以便控制其播放。
在添加了多媒体文件后,用户可以使用按钮来控制播放与暂停,这是通过调用MediaElement对象的相关方法来实现的,按钮的事件处理代码如下所示。
代码位置:见光盘中本章源代码的Controls\ AddNewFriendControl.xaml.cs文件。
01 private void btnVideoPlay_Click(object sender, RoutedEventArgs e) 02 { 03 videoSrc.Play(); //播放视频 04 } 05 private void btnVideoStop_Click(object sender, RoutedEventArgs e) 06 { 07 videoSrc.Stop(); //停止视频播放 08 } 09 private void btnMusicPlay_Click(object sender, RoutedEventArgs e) 10 { 11 musicSrc.Play(); //播放音频 12 } 13 private void btnMusicStop_Click(object sender, RoutedEventArgs e) 14 { 15 musicSrc.Stop(); //停止音频播放 16 }
● 第01~04行代码用于播放视频文件。
● 第05~08行代码用于停止视频文件的播放。
● 第09~12行代码用于播放音频文件。
● 第13~16行代码用于停止音频文件的播放。