【MediaElement】WPF视频播放器【1】

一、前言

      前两天上峰要求做一个软件使用向导,使用WPF制作。这不,这两天从一张白纸开始学起,做一个播放演示视频的使用向导。以下是粗设计的原型代码:

二、效果图

 

 

三、代码

       前台代码:

 1 <Window
 2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 4         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
 5         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 6         xmlns:local="clr-namespace:WPF_Nav"
 7         xmlns:dxlc="http://schemas.devexpress.com/winfx/2008/xaml/layoutcontrol" xmlns:dxwui="http://schemas.devexpress.com/winfx/2008/xaml/windowsui" x:Class="WPF_Nav.MainWindow"
 8         mc:Ignorable="d"
 9         Title="MainWindow" Height="480" Width="900" WindowStyle="None">
10     <Grid Name="Main_Grid">
11         <Grid.RowDefinitions>
12             <RowDefinition Height="40"></RowDefinition>
13             <RowDefinition Height="343"></RowDefinition>
14             <RowDefinition Height="30"></RowDefinition>
15             <RowDefinition Height="50"></RowDefinition>
16         </Grid.RowDefinitions>
17         <Grid Name="Title" Grid.Row="0">
18             <Grid.ColumnDefinitions>
19                 <ColumnDefinition Width="200"></ColumnDefinition>
20                 <ColumnDefinition Width="500"></ColumnDefinition>
21                 <ColumnDefinition Width="120"></ColumnDefinition>
22                 <ColumnDefinition Width="80"></ColumnDefinition>
23             </Grid.ColumnDefinitions>
24             <Button Grid.Column="3" HorizontalAlignment="Center" Width="40" Height="40" Click="Button_Click" Margin="16,0,0,0" >关闭</Button>
25         </Grid>
26         <Grid Name="Movie" Grid.Row="1">
27             <MediaElement Stretch="Fill" LoadedBehavior="Manual" Name="QS_Movie" MediaOpened="Element_MediaOpened" Loaded="QS_Movie_Loaded" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"></MediaElement>
28             <Button Name="LeftButton" Width="50" Height="50" HorizontalAlignment="Left" VerticalAlignment="Center" Click="Left_Click">上一个</Button>
29             <Button Name="RightButton" Width="50" Height="50" HorizontalAlignment="Right" VerticalAlignment="Center" Click="Right_Click">下一个</Button>
30         </Grid>
31         <Grid Name="Control_Progress" Grid.Row="2">
32             <Slider Height="30" Width="700" Name="timelineSlider" VerticalAlignment="Center"  PreviewMouseLeftButtonDown="timelineMDown"  PreviewMouseLeftButtonUp="timelineMUp" BorderThickness="0,5,0,0" ></Slider>
33         </Grid>
34         <Grid Name="Movie_Control" Grid.Row="3" Margin="0,0,0,0">
35             <Grid.ColumnDefinitions>
36                 <ColumnDefinition Width="200"></ColumnDefinition>
37                 <ColumnDefinition Width="500"></ColumnDefinition>
38                 <ColumnDefinition Width="50"></ColumnDefinition>
39                 <ColumnDefinition Width="150"></ColumnDefinition>
40             </Grid.ColumnDefinitions>
41             <StackPanel Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Center">
42                 <Button Height="40" Width="40" x:Name="Play" Click="Play_Click" Margin="20,0">播放</Button>
43                 <Button Height="40" Width="40" x:Name="Pause" Click="Pause_Click" Margin="20,0">暂停</Button>
44             </StackPanel>
45             <Slider Height="25" Width="120" Name="Volunme" Minimum="0" Maximum="1" Value="{Binding ElementName=QS_Movie,Path=Volume,Mode=TwoWay}" Grid.Column="3" HorizontalAlignment="Left" Margin="0,5,0,0" ></Slider>
46             <Button Height="25" Width="40" Name="Horn" Grid.Column="2" HorizontalAlignment="Right" Margin="0,13">音量</Button>
47         </Grid>
48     </Grid>
49 </Window>

       

            后台代码:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 using System.Windows;
 7 using System.Windows.Controls;
 8 using System.Windows.Data;
 9 using System.Windows.Documents;
10 using System.Windows.Input;
11 using System.Windows.Media;
12 using System.Windows.Media.Imaging;
13 using System.Windows.Navigation;
14 using System.Windows.Shapes;
15 using System.Windows.Threading;
16 
17 namespace WPF_Nav
18 {
19     /// <summary>
20     /// MainWindow.xaml 的交互逻辑
21     /// </summary>
22     public partial class MainWindow : Window
23     {
24         DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer(); // 定义一个DT
25         public MainWindow()
26         {
27             InitializeComponent();
28         }
29 
30         private void Play_Click(object sender, RoutedEventArgs e)
31         {         
32             QS_Movie.Play();          
33         }
34 
35         private void Pause_Click(object sender, RoutedEventArgs e)
36         {
37             QS_Movie.Pause();         
38         }
39 
40         private void Element_MediaOpened(object sender, EventArgs e)
41         {
42             timelineSlider.Maximum = QS_Movie.NaturalDuration.TimeSpan.TotalMilliseconds;  //设置slider最大值
43             int sec = (int)QS_Movie.NaturalDuration.TimeSpan.TotalSeconds; 
44             dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick); //超过计时间隔时发生
45             dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 0, 500); //DT间隔
46             dispatcherTimer.Start(); //DT启动 
47         }
48 
49         private void dispatcherTimer_Tick(object sender, EventArgs e)
50         {
51             timelineSlider.Value = QS_Movie.Position.TotalMilliseconds; //slider滑动值随播放内容位置变化
52         }
53 
54         private void timelineMDown(object sender, EventArgs e)
55         {
56             dispatcherTimer.Stop();
57         }
58         private void timelineMUp(object sender, EventArgs e)
59         {
60             QS_Movie.Position = new TimeSpan(0, 0, 0, 0, (int)timelineSlider.Value);
61             dispatcherTimer.Start();
62             QS_Movie.Play();
63         }
64 
65         private void QS_Movie_Loaded(object sender, RoutedEventArgs e)
66         {
67             QS_Movie.Source = new Uri(@"E:\Test\WPFTest\Sources\preview.mp4");
68             QS_Movie.Play();
69             System.Threading.Thread.Sleep(500);
70             QS_Movie.Pause();
71         }
72 
73         private void Left_Click(object sender, RoutedEventArgs e)
74         {
75             QS_Movie.Source = new Uri(@"E:\Test\WPFTest\Sources\preview1.mp4");
76             QS_Movie.Play();
77             System.Threading.Thread.Sleep(500);
78             QS_Movie.Pause();
79         }
80 
81         private void Right_Click(object sender, RoutedEventArgs e)
82         {
83             QS_Movie.Source = new Uri(@"E:\Test\WPFTest\Sources\preview2.mp4");            
84             QS_Movie.Play();
85             System.Threading.Thread.Sleep(500);
86             QS_Movie.Pause();
87         }
88 
89         private void Button_Click(object sender, RoutedEventArgs e)
90         {
91             this.Close();
92         }
93 
94        
95         
96     }
97 
98 
99 }

四、小结

刚玩WPF两天,可能有些地方写的不好望见谅,听江湖传言<MediaElement>可能对Win8不支持,我也不清楚,我是Win7的。所以以上代码仅供参考。

PS:使用向导该怎么做?因为公司软件里的按钮都能按F1直接切到官方文档,还有Tooltips自带小视频演示,我这使用向导思来想去还是用视频的方式呈现,但是组长说做的像个播放器,不像使用向导,我是想把软件每步操作都做成视频左右翻页的,确是是像播放器。这可怎么整?求万能的博友指明一条活路!

 

转载于:https://www.cnblogs.com/lovecsharp094/p/5628287.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于 WPF 视频播放器,你需要具备以下基础知识: 1. WPFWPF(Windows Presentation Foundation)是一个用于创建用户界面的框架,它可以让开发者通过 XAML 和 C# 或 VB.NET 来创建现代化的 Windows 应用程序。 2. MediaElement 控件:MediaElement 控件是 WPF 中用于播放音频和视频的控件,它支持多种格式的音视频文件,并且可以进行基本的控制,如播放、暂停、停止等。 下面是一个简单的 WPF 视频播放器的示例代码: ```xaml <Window x:Class="WpfVideoPlayer.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="WPF Video Player" Height="450" Width="800"> <Grid> <MediaElement x:Name="mediaPlayer" Source="video.mp4" /> <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0,0,0,20"> <Button Content="Play" Click="Play_Click" Margin="10" /> <Button Content="Pause" Click="Pause_Click" Margin="10" /> <Button Content="Stop" Click="Stop_Click" Margin="10" /> </StackPanel> </Grid> </Window> ``` ```csharp public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void Play_Click(object sender, RoutedEventArgs e) { mediaPlayer.Play(); } private void Pause_Click(object sender, RoutedEventArgs e) { mediaPlayer.Pause(); } private void Stop_Click(object sender, RoutedEventArgs e) { mediaPlayer.Stop(); } } ``` 在这个示例中,我们使用 MediaElement 控件来播放视频文件,其中 Source 属性指定了视频文件的路径。我们还添加了三个按钮来控制视频的播放、暂停和停止。在代码中,我们分别在这三个按钮的 Click 事件处理程序中调用了 MediaPlayer 控件的 Play、Pause 和 Stop 方法来实现对视频的控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值