软件概览:
区域组成:一个MediaElement控件+一个ListView控件+一个TextBlock控件+一个Slider控件+若干button控件
功能介绍:
1、视频区
用于播放列表中的视频内容
2、控制区
包含播放(暂停)、停止、快进、快退、音量;返回按钮为关闭此窗体
3、播放列表
显示所要播放的视频列表,列表中的内容位于一个盘符目录中,向此目录添加视频时,启动此程序,列表将显示此目录下的所有视频,程序已设为播放列表循环播放(非单个循环)。
代码如下:
Xaml:
<Window x:Class="泗阳行政服务中心.VentureNewsWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="VentureNewsWindow" Height="1138" Width="2000" WindowStartupLocation="CenterScreen" WindowState="Maximized" WindowStyle="None" Loaded="Window_Loaded" ShowInTaskbar="False" Background="#FF2C2C31"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="418*" /> <ColumnDefinition Width="72*" /> <ColumnDefinition Width="83*" /> <ColumnDefinition Width="72*" /> <ColumnDefinition Width="80*" /> <ColumnDefinition Width="72*" /> <ColumnDefinition Width="68*" /> <ColumnDefinition Width="73*" /> <ColumnDefinition Width="85*" /> <ColumnDefinition Width="60*" /> <ColumnDefinition Width="604*" /> <ColumnDefinition Width="18*" /> <ColumnDefinition Width="163*" /> <ColumnDefinition Width="110*" /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="15*" /> <RowDefinition Height="44*" /> <RowDefinition Height="990*" /> <RowDefinition Height="7*" /> <RowDefinition Height="37*" /> <RowDefinition Height="4*" /> <RowDefinition Height="2*" /> </Grid.RowDefinitions> <!-- Background="#FF2C2C31" Foreground="#FF9AE500" --> <ListView Margin="1,0,0,0" Name="listView1" SelectionMode="Single" IsSynchronizedWithCurrentItem="{x:Null}" SelectionChanged="listView1_SelectionChanged" Grid.Row="2" Grid.ColumnSpan="3" Grid.Column="11" Background="#FF2C2C31" Foreground="#FF9AE500" FontSize="20" /> <Button Content="返 回" Grid.Column="11" Grid.Row="3" Margin="1,0,0,1" Name="button1" FontSize="32" Foreground="#FF9AE500" Background="{x:Null}" Grid.ColumnSpan="3" Click="button1_Click" Cursor="Hand" Grid.RowSpan="2" /> <MediaElement Volume="{Binding ElementName=volumeSlider, Path=Value}" Grid.RowSpan="3" Name="mediaElement1" Margin="0,0,5,0" MediaEnded="mediaElement1_MediaEnded" Grid.ColumnSpan="11" /> <Slider x:Name="volumeSlider" Minimum="0" Maximum="1" Value="0.5" Margin="1,11,430,12" Grid.Row="4" Grid.Column="10" /> <TextBlock Grid.Row="4" Margin="4,7,4,5" Name="textBlock1" Text="音量:" Foreground="#FF9AE500" FontSize="20" Grid.Column="9" /> <Button Background="{x:Null}" Content="播 放" Cursor="Hand" FontSize="20" Foreground="#FF9AE500" Margin="2,1,0,1" Name="button3" Grid.Row="4" Click="button3_Click_1" Grid.Column="1" /> <Button Background="{x:Null}" Content="停 止" Cursor="Hand" FontSize="20" Foreground="#FF9AE500" Margin="2,1,0,1" Name="button4" Grid.Row="4" Click="button4_Click" Grid.Column="3" /> <Button Background="{x:Null}" Content="快 进" Cursor="Hand" FontSize="20" Foreground="#FF9AE500" Margin="2,1,0,0" Name="button5" Grid.Row="4" Click="button5_Click" Grid.Column="5" /> <Button Background="{x:Null}" Content="快 退" Cursor="Hand" FontSize="20" Foreground="#FF9AE500" Margin="1,1,2,1" Name="button6" Grid.Row="4" Click="button6_Click" Grid.Column="7" /> <Button Background="{x:Null}" Content="播放列表" Cursor="Hand" FontSize="32" Foreground="#FF9AE500" Margin="0,1,1,0" Name="button2" Grid.Column="11" Grid.ColumnSpan="3" Grid.Row="1" /> </Grid> </Window>
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.Shapes; using System.IO; namespace 泗阳行政服务中心 { /// <summary> /// VentureNewsWindow.xaml 的交互逻辑 /// </summary> public partial class VentureNewsWindow : Window { string root = "", pathMedia = ""; public VentureNewsWindow() { InitializeComponent(); InitPath(); AddItemToListView(); } //获取视频目录 private void InitPath() { ApplicationPath ap = new ApplicationPath(); root = ap.GetRtfPath("root"); pathMedia = root + ap.GetRtfPath("pathMedia"); } //将视频目录下的视频名称添加到ListView中 private void AddItemToListView() { string[] files = Directory.GetFiles(pathMedia); foreach (string file in files) { this.listView1.Items.Add(file.Substring(file.LastIndexOf('\\') + 1)); } } //窗体加载时调用视频,进行播放 private void Window_Loaded(object sender, RoutedEventArgs e) { MediaElementControl(); } //存储播放列表中视频的名称 List<string> fileNames = new List<string>(); private void MediaElementControl() { this.mediaElement1.LoadedBehavior = MediaState.Manual; string[] files = Directory.GetFiles(pathMedia); foreach(string file in files) { fileNames.Add(file.Substring(file.LastIndexOf('\\') + 1)); } this.mediaElement1.Source = new Uri(files[0]); this.mediaElement1.Play(); } //视频播放结束事件 private void mediaElement1_MediaEnded(object sender, RoutedEventArgs e) { //获取当前播放视频的名称(格式为:xxx.wmv) string path = this.mediaElement1.Source.LocalPath; string currentfileName = path.Substring(path.LastIndexOf('\\') + 1); //对比名称列表,如果相同,则播放下一个,如果播放的是最后一个,则从第一个重新开始播放 for (int i = 0; i < fileNames.Count;i++ ) { if (currentfileName == fileNames[i]) { if (i == fileNames.Count - 1) { this.mediaElement1.Source = new Uri(pathMedia + "//" + fileNames[0]); this.mediaElement1.Play(); } else { this.mediaElement1.Source = new Uri(pathMedia + "//" + fileNames[i + 1]); this.mediaElement1.Play(); } break; } } } //播放列表选择时播放对应视频 private void listView1_SelectionChanged(object sender, SelectionChangedEventArgs e) { string fileName = this.listView1.SelectedValue.ToString(); this.mediaElement1.Source = new Uri(pathMedia + "//" + fileName); this.mediaElement1.Play(); } //返回按钮 private void button1_Click(object sender, RoutedEventArgs e) { this.Close(); } private void button3_Click(object sender, RoutedEventArgs e) { this.mediaElement1.Position = this.mediaElement1.Position + TimeSpan.FromSeconds(20); } //播放、暂停按钮 private void button3_Click_1(object sender, RoutedEventArgs e) { if (button3.Content.ToString() == "播 放") { mediaElement1.Play(); button3.Content = "暂 停"; mediaElement1.ToolTip = "Click to Pause"; } else { mediaElement1.Pause(); button3.Content = "播 放"; mediaElement1.ToolTip = "Click to Play"; } } //停止播放视频 private void button4_Click(object sender, RoutedEventArgs e) { this.mediaElement1.Stop(); } //快进 private void button5_Click(object sender, RoutedEventArgs e) { mediaElement1.Position = mediaElement1.Position + TimeSpan.FromSeconds(10); } //快退 private void button6_Click(object sender, RoutedEventArgs e) { mediaElement1.Position = mediaElement1.Position - TimeSpan.FromSeconds(10); } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml; namespace 泗阳行政服务中心 { class ApplicationPath { private readonly static string ImagePath = Environment.CurrentDirectory + "\\image\\"; private readonly static string RtfPath = Environment.CurrentDirectory + "\\rtf\\"; XmlDocument xDoc = new XmlDocument(); public ApplicationPath() { xDoc.Load(getAppConfigPath()); } public static string getImagePath() { return ImagePath; } public static string getRtfPath() { return RtfPath; } public string getAppConfigPath() { return Environment.CurrentDirectory + "\\App.config"; } //获取App.config值 public string GetRtfPath(string appKey) { try { XmlNode xNode; XmlElement xElem; xNode = xDoc.SelectSingleNode("//appSettings"); xElem = (XmlElement)xNode.SelectSingleNode("//add[@key='" + appKey + "']"); if (xElem != null) { return xElem.GetAttribute("value"); } else return ""; } catch (Exception) { return ""; } } } }
<?xml version="1.0" encoding="utf-8"?> <configuration> <appSettings> <add key="root" value="D:\泗阳行政服务中心文档\" /> <add key="pathMedia" value="平时状态\创业新闻\" /> </appSettings> </configuration>