C# Winform WindowsMediaPlayer控件

要做一个视频无缝切换的程序,所谓无缝就是在一个视频结束时立即开始另一个视频,中间不要有切换的黑屏

实现思路是放两个wmp播放控件,其中每个时刻只有一个在播放,另外一个处于暂停状态,并隐藏

当一个视频播放完后,切换显示另一个视频,同时这个视频隐藏起来并加载下一段视频,视频加载完成后(wmp会有事件通知)暂停

这样就去除了加载时的短暂空挡

有时可能会有键盘鼠标事件影响wmp的状态,所以使用定时器虽然监测wmp的播放状态


private void Form1_Load(object sender, EventArgs e)
{
timer1.Enabled = true;
wmp1.URL = ConfigurationManager.AppSettings["File1Path"];
wmp2.URL = ConfigurationManager.AppSettings["File1Path"];
playnow = 1;

wmpnow = 1;
wmp1.Visible = true;
wmp2.Visible = false;

wmp1pause = 0;
wmp2pause = 0;

}


 private bool isFullScreen = false;
private int playnow = 1;
private int wmp1pause = 0;
private int wmp2pause = 0;
private int wmpnow = 1;

private void timer1_Tick(object sender, EventArgs e)
{
if (wmp1.Ctlcontrols.currentPosition == 0)
wmp1.Ctlcontrols.play();
else
{
if (wmp1.Ctlcontrols.currentPosition > 0 && wmp1pause==0 && wmpnow==2)
{
if (playnow == 2)
{
wmp1.Visible = true;
wmp1.settings.volume = wmp2.settings.volume;
wmpnow = 1;

playnow = 1;
wmp2.Visible = false;
wmp2.Ctlcontrols.stop();
wmp2pause = 0;
}
else
wmp1.Ctlcontrols.pause();
wmp1pause = 1;
}
if (wmp1.currentMedia.duration - wmp1.Ctlcontrols.currentPosition < 0.05)
{
wmpnow = 2;
wmp2.Visible = true;
wmp2.settings.volume = wmp1.settings.volume;
wmp2.Ctlcontrols.play();

wmp1.Visible = false;
wmp1.Ctlcontrols.stop();
wmp1.URL = ConfigurationManager.AppSettings["File1Path"];
wmp1pause = 0;
}
}
if (wmp2.Ctlcontrols.currentPosition == 0)
wmp2.Ctlcontrols.play();
else
{
if (wmp2.Ctlcontrols.currentPosition > 0 && wmp2pause == 0 && wmpnow==1)
{
if (playnow == 2)
{
wmp2.Visible = true;
wmp2.settings.volume = wmp1.settings.volume;
wmpnow = 2;

playnow = 1;
wmp1.Visible = false;
wmp1.Ctlcontrols.stop();
wmp1pause = 0;
}
else
wmp2.Ctlcontrols.pause();
wmp2pause = 1;
}
if (wmp2.currentMedia.duration - wmp2.Ctlcontrols.currentPosition < 0.05)
{
wmpnow = 1;
wmp1.Visible = true;
wmp1.settings.volume = wmp2.settings.volume;
wmp1.Ctlcontrols.play();

wmp2.Visible = false;
wmp2.Ctlcontrols.stop();
wmp2.URL = ConfigurationManager.AppSettings["File1Path"];
wmp2pause = 0;
}
}
}

C# Winform WindowsMediaPlayer控件,布布扣,bubuko.com

时间: 2024-07-30 01:28:21

C# Winform WindowsMediaPlayer控件的相关文章

在DevExpress程序中使用Winform分页控件直接录入数据并保存

一般情况下,我们都倾向于使用一个组织比较好的独立界面来录入或者展示相关的数据,这样处理比较规范,也方便显示比较复杂的数据.不过在一些情况下,我们也可能需要直接在GridView表格上直接录入或者修改数据,这种对于字段比较少,而且内容相对比较简单的情况下,效率是比较高的一种输入方式.本篇随笔主要介绍在DevExpress程序中使用GridView直接录入数据并保存的实现,以及使用Winform分页控件来进行数据直接录入的实现操作. 1.在GridView上展示数据 在GridView上展示数据,只

winform分页控件

五一过的一多半已经过去了,感觉过的真快. 言归正传说说最近一直在用的winform分页控件. 一. 添加新项-用户控件 二.拖控件,这个很简单 三.写代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Win

类似web风格的 Winform 分页控件

背景 最近做一个Winform的小程序,需要用到分页,由于之前一直在用 TonyPagerForWinForm.dll ,但该库没有源代码,网上找的也不全面,索性就准备自己改造一个.在园子里翻了一下,发现路过秋天在多年前写了个分页控件,Winform 通用分页控件实战篇(提供源码下载).站在大神的肩膀上就是快,一会就改好了. 效果图 功能比较齐全,不过样式上,楼主十分喜欢easyUI或ext的列表分页风格.于是换了几个按钮,添加了图标,看看现在的效果. 控件源码在正文最下方. 使用简介 就那么一

winform用户控件

用途用户控件包含Time控件和一个lable控件,一个ToolStrip控件,每隔一秒显示一次时间     1. 生成用户控件   新建一个项目类型为用户控件   注意定义类名,此类名为以后工具箱中显示的名字,暂且定义此处类名为LabelTime. 文件名称为UserControl1.cs(无关紧要,vs引用dll的时候,都是关注类名非文件名)     namespace myWindowsFormsControlLibrary1 { public partial class labelTime

WinForm Control 控件命名规范

1.标准控件 序号 控件类型简写 控件类型 1 btn Button 2 chk CheckBox 3 ckl CheckedListBox 4 cmb ComboBox 5 dtp DateTimePicker 6 lbl Label 7 llb LinkLabel 8 lst ListBox 9 lvw ListView 10 mtx MaskedTextBox 11 cdr MonthCalendar 12 icn NotifyIcon 13 nud NumeircUpDown 14 pi

winform上控件太多,绘制时会逐个出现,通常说双缓冲能解决但实际不能解决的问题的解决方法。

protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.ExStyle |= 0x02000000; return cp; } } 接着找办法解决500多个控件PAINT缓慢的效能问题,心塞.分类都不想分了,就这样. winform上控件太多,绘制时会逐个出现,通常说双缓冲能解决但实际不能解决的问题的解决方法.,布布扣,bubuko.com

C# WinForm 时间控件(DEV控件)

此处收集一些关于时间控件(DevExpress.XtraEditors.DateEdit())的一些基本设定方式: 1. 默认显示当前日期: a. 在某些情况下(还未明朗),在 form.Designer.cs 中,将该控件的EditValue赋null值: this.detoBeginTime.EditValue = null; b. 若设定上述方式后,仍无法显示默认时间,可再页面加载.窗体初始化时,初始化控件的值: detoBeginTime.Text = DateTime.Now.ToSt

Winform状态栏控件中Label靠右显示的方法

设计器: 代码: 在Form_Load事件中添加 : statusStripMain.LayoutStyle= ToolStripLayoutStyle.HorizontalStackWithOverflow; lbl单位.Alignment = ToolStripItemAlignment.Right; lblCompany.Alignment = ToolStripItemAlignment.Right; lbl联系电话.Alignment = ToolStripItemAlignment.

DevExpress Winform 通用控件打印方法(允许可自定义边距) z

DevExpress Winform 通用控件打印方法,包括gridcontrol,treelist,pivotGridControl,ChartControl,LayoutControl...(所有支持打印功能的控件) ,同时允许用户自定义报表标题,报表纸张类型(A4,A3...),报表边距 /// <summary> /// 打印功能 /// </summary> /// <param name="panel">打印控件</param>