刚学C#,自己做的一个基于VLC的视频播放器,仅做备忘(二)

本文介绍了如何在Windows应用中使用VlcPlayer库实现视频播放控制,包括进度条的实时更新、停止按钮的功能以及全屏模式的切换。通过事件处理和窗口管理,实现了播放时的交互与全屏/非全屏状态的切换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

八、实现进度条

接上一篇,将网格布局面板(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、至此全屏和退出全屏的操作就行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值