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

实现思路是放两个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 = ; wmpnow = ;
wmp1.Visible = true;
wmp2.Visible = false; wmp1pause = ;
wmp2pause = ; }
 private bool isFullScreen = false;
private int playnow = ;
private int wmp1pause = ;
private int wmp2pause = ;
private int wmpnow = ; private void timer1_Tick(object sender, EventArgs e)
{
if (wmp1.Ctlcontrols.currentPosition == )
wmp1.Ctlcontrols.play();
else
{
if (wmp1.Ctlcontrols.currentPosition > && wmp1pause== && wmpnow==)
{
if (playnow == )
{
wmp1.Visible = true;
wmp1.settings.volume = wmp2.settings.volume;
wmpnow = ; playnow = ;
wmp2.Visible = false;
wmp2.Ctlcontrols.stop();
wmp2pause = ;
}
else
wmp1.Ctlcontrols.pause();
wmp1pause = ;
}
if (wmp1.currentMedia.duration - wmp1.Ctlcontrols.currentPosition < 0.05)
{
wmpnow = ;
wmp2.Visible = true;
wmp2.settings.volume = wmp1.settings.volume;
wmp2.Ctlcontrols.play(); wmp1.Visible = false;
wmp1.Ctlcontrols.stop();
wmp1.URL = ConfigurationManager.AppSettings["File1Path"];
wmp1pause = ;
}
}
if (wmp2.Ctlcontrols.currentPosition == )
wmp2.Ctlcontrols.play();
else
{
if (wmp2.Ctlcontrols.currentPosition > && wmp2pause == && wmpnow==)
{
if (playnow == )
{
wmp2.Visible = true;
wmp2.settings.volume = wmp1.settings.volume;
wmpnow = ; playnow = ;
wmp1.Visible = false;
wmp1.Ctlcontrols.stop();
wmp1pause = ;
}
else
wmp2.Ctlcontrols.pause();
wmp2pause = ;
}
if (wmp2.currentMedia.duration - wmp2.Ctlcontrols.currentPosition < 0.05)
{
wmpnow = ;
wmp1.Visible = true;
wmp1.settings.volume = wmp2.settings.volume;
wmp1.Ctlcontrols.play(); wmp2.Visible = false;
wmp2.Ctlcontrols.stop();
wmp2.URL = ConfigurationManager.AppSettings["File1Path"];
wmp2pause = ;
}
}
}

C# Winform WindowsMediaPlayer控件的更多相关文章

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

    一般情况下,我们都倾向于使用一个组织比较好的独立界面来录入或者展示相关的数据,这样处理比较规范,也方便显示比较复杂的数据.不过在一些情况下,我们也可能需要直接在GridView表格上直接录入或者修改数 ...

  2. winform窗体控件(全)

    回顾跟补充下除了昨天那常用6个其他的winform窗体控件作用 1:Button:按钮 (1)AutoSize:如果是True的情况下,内容将会撑开:False的话会另起一行 (2)Enabled: ...

  3. C#实现WinForm DataGridView控件支持叠加数据绑定

    我们都知道WinForm DataGridView控件支持数据绑定,使用方法很简单,只需将DataSource属性指定到相应的数据源即可,但需注意数据源必须支持IListSource类型,这里说的是支 ...

  4. winform基本控件----按钮

    这次来引用一个我们上课时候老师给的一个实验内容,来说一下winform程序设计中的按钮控件的使用.下面是我们老师给的实验内容. 实验目的: 掌握Winform的开发环境. 掌握窗体的创建和基本方法. ...

  5. WinForm给控件加入hint文字

    本文代码主要是参考别人的,仅为个人记录,方面后续使用~ 效果图: 主要代码在一个Win32Utility类中,代码如下: public static class Win32Utility { [Dll ...

  6. C# WinForm实现控件拖动实例介绍

    主要是设计控件的MouseDown.MouseLeave.MouseMove事件.一步步来吧:1.定义一个枚举类型,描述光标状态 private enum EnumMousePointPosition ...

  7. Winform DevExpress控件库(一) DevExpress控件库的安装与新建第一个DevExpress项目

    前言:因为这段时间要接触到DevExpress控件库,而我本身甚至对winform的控件都了解甚少,所以处在学习中,写下博客主要是为了方便后期的回顾,当然也可以给一些新人第一次接触时做为学习的参考,以 ...

  8. DevExpress Winform 常用控件

    Ø  前言 DevExpress 控件的功能比较强大,是全球知名控件开发公司,对于开发 B/S 或 C/S 都非常出色,可以实现很炫且功能强大的效果. DevExpress Winform 常用控件是 ...

  9. C# WinForm窗体控件Panel修改边框颜色以及边框宽度方法

    C# WinForm窗体控件Panel修改边框颜色以及边框宽度方法 1.新建组件这里可以自定义一个Panel控件起名为PanelEx 2.增加一个BoderColor属性和BoderSize属性 pr ...

随机推荐

  1. .net 2.0中半角全角错误的解决办法

    VS2005中.net 2.0编译报错如下所示:'System.Windows.Forms.ImeMode' does not contain a definition for 'OnHalf'.只需 ...

  2. struts2 result的type属性

    目前只使用过以下3种,都是直接跳转到另一个action  chain: 写法:<result name="success" type="chain"> ...

  3. 对面向对象程序设计(OOP)的认识

    前言 本文主要介绍面向对象(OO)程序设计,以维基百科的解释: 面向对象程序设计(英语:Object-oriented programming,缩写:OOP),指一种程序设计范型,同时也是一种程序开发 ...

  4. Windows8.1使用博客客户端写博客

    1.首先去微软官网下载客户端(Windows live writer) http://windows.microsoft.com/zh-cn/windows-live/essentials 安装步骤 ...

  5. linux源码安装nodejs

    如何在linux上安装nodejs环境 到网下载安装文件node-v5.10.1-linux-x64.tar.gz.   将源码包上传到linux的/usr/local/node/目录下,在该目录下解 ...

  6. word2pdf

    在网上现在能查到的,并且能通过php调用相关接口,将word转换成pdf文件的有openoffice,访问网址为http://www.openoffice.org/download/index.htm ...

  7. cf B. Color the Fence

    http://codeforces.com/contest/349/problem/B 贪心 #include <cstdio> #include <cstring> #inc ...

  8. Sans Serif 与 Serif 字体是什么意思?

    在西方国家罗马字母阵营中,字体分为两大种类:Sans Serif和 Serif,打字机体虽然也属于 Sans Serif,但由于是等宽字体,所以另外独立出 Monospace 这一种类,例如在Web中 ...

  9. 转:Asp.Net MVC中DropDownListFor的用法

    在Asp.Net MVC中可以用DropDownListFor的方式来让用户选择已定列表中的一个数值.用法不复杂,这里简单做一个记录. 首先我们要定义一个 Model ,用户在 DropDownLis ...

  10. cf486B OR in Matrix

    B. OR in Matrix time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...