八、实现进度条
接上一篇,将网格布局面板(1号)改为三行一列,在第二行插入一个progressBar作为进度条。
设置progressBar最小值0,最大值100;
写一个函数:
private void InitializeProgessBar()
{
int progressValue = (int)(vlcPlayer.VlcMediaPlayer.Position * 100);
if (progressValue< progressBar1.Minimum)
{
progressValue = progressBar1.Minimum;
}else if (progressValue > progressBar1.Maximum)
{
progressValue = progressBar1.Maximum;
}
else
{
progressBar1.Value = progressValue;
}
}
为vlcControl添加一个TimeChanged事件,代码如下:
private void VlcPlayer_TimeChanged(object sender, Vlc.DotNet.Core.VlcMediaPlayerTimeChangedEventArgs e)
{
if (progressBar1.IsDisposed)
return;
Action initializeProgessBarAction = InitializeProgessBar;
BeginInvoke(initializeProgessBarAction);
}
进度条显示完成。
九、实现停止按键
为停止按钮添加click事件,代码如下:
private void StopBtn_Click(object sender, EventArgs e)
{
vlcPlayer.Stop();
BeginInvoke(new Action(() => progressBar1.Value = 0));//停止后将进度条归0;
}
十、实现全屏播放(感觉这种方式不是特别好,请大神指导)
1、为项目添加一个新的窗体,并设置基础属性,代码如下:
namespace ChPlayer
{
public partial class FullScreenForm : Form
{
public FullScreenForm()
{
InitializeComponent();
this.FormBorderStyle = FormBorderStyle.None; //窗口无边框模式
this.WindowState = FormWindowState.Maximized; //窗口最大化
this.TopMost = true; //最前端显示
this.Size = Screen.PrimaryScreen.Bounds.Size; //窗口大小等于主显示器的分辨率
}
}
}
2、在主窗体类中添加两个字段
FullScreenForm fullScreenForm;
private bool isFullScreen = false; //指示窗体是否已经最大化显示
3、为vlcControl控件添加鼠标双击事件,代码如下:
private void VlcPlayer_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (!isFullScreen) //非全屏状态的情况
{
fullScreenForm = new FullScreenForm(); //初始化全屏显示的窗口
this.Controls.Remove(vlcPlayer); //从主窗口中移除vlcControl
fullScreenForm.Controls.Add(vlcPlayer); //全屏窗口中添加vlcControl
fullScreenForm.Show(); //显示全屏窗口
this.Hide(); //隐藏主窗口
isFullScreen = true; //更改全屏状态指示
}
else
{
fullScreenForm.Controls.Clear(); //全屏窗口移除vlcControl
this.tableLayoutPanel1.Controls.Add(vlcPlayer, 0, 0); //主窗口添加vlcControl,并将其放入网格布局面板(1号)的第一行
fullScreenForm.Hide(); //隐藏全屏窗口
this.Show(); //显示主窗口
isFullScreen = false; //更改全屏状态指示
}
}
4、重要的地方来了,完成以上3步后可以实现非播放状态下的全屏和退出全屏,但是在播放状态下无法捕获鼠标事件,解决办法是在主窗口构造函数中添加两行代码:
public Form1()
{
InitializeComponent();
if (vlcPlayer != null)
{
vlcPlayer.Video.IsKeyInputEnabled = false;
vlcPlayer.Video.IsMouseInputEnabled = false;
}
}
5、至此全屏和退出全屏的操作就行了。