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 = ; 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控件的更多相关文章
- 在DevExpress程序中使用Winform分页控件直接录入数据并保存
一般情况下,我们都倾向于使用一个组织比较好的独立界面来录入或者展示相关的数据,这样处理比较规范,也方便显示比较复杂的数据.不过在一些情况下,我们也可能需要直接在GridView表格上直接录入或者修改数 ...
- winform窗体控件(全)
回顾跟补充下除了昨天那常用6个其他的winform窗体控件作用 1:Button:按钮 (1)AutoSize:如果是True的情况下,内容将会撑开:False的话会另起一行 (2)Enabled: ...
- C#实现WinForm DataGridView控件支持叠加数据绑定
我们都知道WinForm DataGridView控件支持数据绑定,使用方法很简单,只需将DataSource属性指定到相应的数据源即可,但需注意数据源必须支持IListSource类型,这里说的是支 ...
- winform基本控件----按钮
这次来引用一个我们上课时候老师给的一个实验内容,来说一下winform程序设计中的按钮控件的使用.下面是我们老师给的实验内容. 实验目的: 掌握Winform的开发环境. 掌握窗体的创建和基本方法. ...
- WinForm给控件加入hint文字
本文代码主要是参考别人的,仅为个人记录,方面后续使用~ 效果图: 主要代码在一个Win32Utility类中,代码如下: public static class Win32Utility { [Dll ...
- C# WinForm实现控件拖动实例介绍
主要是设计控件的MouseDown.MouseLeave.MouseMove事件.一步步来吧:1.定义一个枚举类型,描述光标状态 private enum EnumMousePointPosition ...
- Winform DevExpress控件库(一) DevExpress控件库的安装与新建第一个DevExpress项目
前言:因为这段时间要接触到DevExpress控件库,而我本身甚至对winform的控件都了解甚少,所以处在学习中,写下博客主要是为了方便后期的回顾,当然也可以给一些新人第一次接触时做为学习的参考,以 ...
- DevExpress Winform 常用控件
Ø 前言 DevExpress 控件的功能比较强大,是全球知名控件开发公司,对于开发 B/S 或 C/S 都非常出色,可以实现很炫且功能强大的效果. DevExpress Winform 常用控件是 ...
- C# WinForm窗体控件Panel修改边框颜色以及边框宽度方法
C# WinForm窗体控件Panel修改边框颜色以及边框宽度方法 1.新建组件这里可以自定义一个Panel控件起名为PanelEx 2.增加一个BoderColor属性和BoderSize属性 pr ...
随机推荐
- 此项目的默认Web访问模式设置为文件共享, 但是无法从路径(此为转贴)
故障现象: 当你打开ASP.NET Web项目时,如果出现这样的错误提示:提示窗口标题: Web访问失败提示内容: 此项目的默认Web访问模式设置为文件共享, 但是无法从路径“...”打开“...”处 ...
- ios文件读取
/* * @brief 沙盒下的各种文件 */ - (void)getPaths { /** * @brief 获取沙盒的路径 */ NSString * HomeDirectory = NSHo ...
- UISearchDisplayController简单使用
最近在做一个简单的app入门,中间有一个页面用到了搜索框,本来以为很简单的控件,没想到用到的时候才发现很麻烦. 搜索框使用过程大约有以下几个状态:不活跃-活跃-输入关键词-根据关键词动态列出相关结果- ...
- (原)ubuntu16重装显卡驱动后,torch中的问题
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6030232.html 参考网址: https://github.com/torch/cutorch/i ...
- forward 和redirect的区别
1.从地址栏显示来说 forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地 ...
- React java.lang.UnsatisfiedLinkError: dlopen failed: "/data/data/com.edaixi.activity/lib-main/libgnustl_shared.so" is 32-bit instead of 64-bit
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.edaixi.activity, PID: 3659 at java.lang.Runtime ...
- 一个超级简单php的留言板
第一步:配置好测试环境:(详细略了) 第二部:新建一个数据库,命名为guestbook(名字可以随便改),可以直接在phpmyadmin里面操作,在数据库里面新建一张表‘content’,表里面有4个 ...
- PHP命名空间(Namespace)的使用详解(转)
对于命名空间,官方文档已经说得很详细[查看],我在这里做了一下实践和总结. 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误.这种情况下只 ...
- php 远程下载图片到本地
大家好,从今天开始,小弟开始写写博客,把自己在工作中碰到的问题的解决方法纪录下来,方便以后查找,也给予别人方便,小弟不才,第一次写博客,有什么不足之处请指出,谢谢! 今天纪录的是怎么通过PHP远程把图 ...
- Jasper_passValue_return value from the subreport to main report
create a variable In subreport say returnValue variable class type --> whatever u want calculati ...