网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 设计资源 > .Net编程 > 正文

WPF4媒体播放器(MediaElement)【附实例代码下载】

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

在WPF 中可以使用MediaElement 为应用程序添加媒体播放控件,以完成播放音频、视频功能。由于MediaElement 属于UIElement,所以它同时也支持鼠标及键盘的操作。本篇将使用MediaElement 类和Windows API Code Pack 创建一个简单的视频播放器实现一些基本功能。

界面框架          【完整示例下载】

     在XAML 中放入一个MediaElement 控件(支持视频播放),五个Button 控件(分别用于“打开视频文档”、“播放/暂停”、“停止”、“快退”、“快进”),一个Slider 控件(控制音量)。

  1. <StackPanel HorizontalAlignment="Center" Margin="20"> 
  2.     <Border BorderThickness="3" Background="Black"> 
  3.         <Border.BorderBrush> 
  4.             <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1"> 
  5.                 <GradientStop Offset="0" Color="White"/> 
  6.                 <GradientStop Offset="0.5" Color="Gold"/> 
  7.             </LinearGradientBrush> 
  8.         </Border.BorderBrush> 
  9.         <MediaElement Height="300" Width="450" Name="mediaElement"  
  10.                       Volume="0.5" LoadedBehavior="Manual"  
  11.                       MouseLeftButtonUp="mediaElement_MouseLeftButtonUp"/> 
  12.     </Border> 
  13.     <StackPanel Orientation="Horizontal" Height="40" HorizontalAlignment="Center"> 
  14.         <Button x:Name="openBtn" Content="Open File"  
  15.                 Style="{StaticResource btnStyle}" Click="openBtn_Click"/> 
  16.         <Button x:Name="playBtn" Content="Play"  
  17.                 Style="{StaticResource btnStyle}" Click="playBtn_Click"/> 
  18.         <Button x:Name="stopBtn" Content="Stop"  
  19.                 Style="{StaticResource btnStyle}" Click="stopBtn_Click"/> 
  20.         <Button x:Name="backBtn" Content="Back"  
  21.                 Style="{StaticResource btnStyle}" Click="backBtn_Click"/> 
  22.         <Button x:Name="forwardBtn" Content="Forward"  
  23.                 Style="{StaticResource btnStyle}" Click="forwardBtn_Click"/> 
  24.     </StackPanel> 
  25.     <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Margin="5"> 
  26.         <TextBlock Text="Volume" Foreground="Gold"/> 
  27.         <Slider x:Name="volumeSlider" Minimum="0" Maximum="1" Value="0.5" Width="200"/> 
  28.     </StackPanel> 
  29. </StackPanel> 

注意,MediaElement 的LoadedBehavior 需要设置为Manual,这样才可以手动控制视频的播放状态。

界面样式

     上面代码中已经为部分控件设置了一些简单样式,其中Button 控件通过静态资源btnStyle 进行了较为复杂的样式设定。首先修改了Button 的默认样式,并且在鼠标移至上方时字体颜色也会产生变化。

  1. <Window.Resources> 
  2.     <Style x:Key="btnStyle" TargetType="Button"> 
  3.         <Setter Property="Background"> 
  4.             <Setter.Value> 
  5.                 <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1"> 
  6.                     <GradientStop Offset="0" Color="White"/> 
  7.                     <GradientStop Offset="0.5" Color="#FF554D4A"/> 
  8.                 </LinearGradientBrush> 
  9.             </Setter.Value> 
  10.         </Setter> 
  11.         <Setter Property="FontStyle" Value="Italic"/> 
  12.         <Setter Property="Margin" Value="5"/> 
  13.         <Setter Property="Width" Value="60"/> 
  14.         <Setter Property="Foreground" Value="Gold"/> 
  15.         <Style.Triggers> 
  16.             <Trigger Property="Button.IsMouseOver" Value="True"> 
  17.                 <Setter Property="Foreground" Value="Black"/> 
  18.             </Trigger> 
  19.         </Style.Triggers> 
  20.     </Style> 
  21. </Window.Resources> 

MediaStyle

浏览视频文件

     在视频文件浏览部分引入Windows API Code Pack,使用KnownFolders 类将文件浏览窗口直接定位到媒体库的Sample Videos 目录,并添加WMV、AVI 文件过滤器。

API

  1. private void openBtn_Click(object sender, RoutedEventArgs e) 
  2.     ShellContainer selectedFolder = null
  3.     selectedFolder = KnownFolders.SampleVideos as ShellContainer; 
  4.     CommonOpenFileDialog cfd = new CommonOpenFileDialog(); 
  5.     cfd.InitialDirectoryShellContainer = selectedFolder; 
  6.     cfd.EnsureReadOnly = true
  7.     cfd.Filters.Add(new CommonFileDialogFilter("WMV Files""*.wmv")); 
  8.     cfd.Filters.Add(new CommonFileDialogFilter("AVI Files""*.avi")); 
  9.     cfd.Filters.Add(new CommonFileDialogFilter("MP3 Files""*.mp3")); 
  10.  
  11.     if (cfd.ShowDialog() == CommonFileDialogResult.OK) 
  12.     { 
  13.         mediaElement.Source = new Uri(cfd.FileName, UriKind.Relative); 
  14.         playBtn.IsEnabled = true
  15.     } 

OpenFile

播放/暂停

     在视频播放过程中可以通过点击“Play/Pause” 按键或“MediaElement” 窗口,对视频进行“播放/暂停”操作。

  1. private void PlayerPause() 
  2.     SetPlayer(true); 
  3.     if (playBtn.Content.ToString() == "Play"
  4.     { 
  5.         mediaElement.Play(); 
  6.         playBtn.Content = "Pause"
  7.         mediaElement.ToolTip = "Click to Pause"
  8.     } 
  9.     else 
  10.     { 
  11.         mediaElement.Pause(); 
  12.         playBtn.Content = "Play"
  13.         mediaElement.ToolTip = "Click to Play"
  14.     } 
  15.  
  16. private void playBtn_Click(object sender, RoutedEventArgs e) 
  17.     PlayerPause(); 
  18.  
  19. private void mediaElement_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) 
  20.     PlayerPause(); 

快退/快进

     通过修改MediaElement 的Position 值实现视频进度调整操作。时间间隔通过TimeSpan 进行设置(下面代码以10秒为间隔)。

  1. private void backBtn_Click(object sender, RoutedEventArgs e) 
  2.     mediaElement.Position = mediaElement.Position - TimeSpan.FromSeconds(10); 
  3.  
  4. private void forwardBtn_Click(object sender, RoutedEventArgs e) 
  5.     mediaElement.Position = mediaElement.Position + TimeSpan.FromSeconds(10); 

音量调节

     音量调节部分只需将Slider Value 变化值与MediaElement Volume 值做一个简单Binding 即可。

  1.  
  2. <MediaElement Height="300" Width="450" Name="mediaElement" LoadedBehavior="Manual" 
  3.               Volume="{Binding ElementName=volumeSlider, Path=Value}" 
  4.               MouseLeftButtonUp="mediaElement_MouseLeftButtonUp"/> 
  5.  

MediaPlayer

  • 上一篇资讯: 什么是序列化和反序列
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师