第二节 播放器功能实现2.pptx_第1页
第二节 播放器功能实现2.pptx_第2页
第二节 播放器功能实现2.pptx_第3页
第二节 播放器功能实现2.pptx_第4页
第二节 播放器功能实现2.pptx_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MiniMusic播放器,注:课件和视频版权归作者所有,未经许可不准上传、传播、商用。,作者:吴鹏,邮箱:,电话正版视频: ,接下来我将用认真、严谨、诚恳、专业的态度和大家一起学习这个播放器的制作。将带领大家从无到有,完整的编写一个酷酷的播放器。手写每一行代码,讲述每一个关键技术。 现在很多书籍内容很多,做出来的东西却粗制滥造。结尾的都会加一句“进一步需要读者自己完善”。有时候我就在想有没有一本写完整的书?真是一堆垃圾! 这个酷酷的播放器是开源网上的代码演变而来,然后我尽了所有知道的知识去完善它, 希望能给学习C# 朋友,带来帮助!,介绍:,第二节 播放器,10.播放

2、进度、播放时间、总时间 11.动态标题实现 12.动态标题栏同步歌曲名,10.播放进度、当前播放事件、总时间,1.播放进度条实现 2.当前播放时间同步、总时间同步、进度条跟进,播放进度,1.自定义进度条(制作方法和原来一样) 2.获取媒体总长度(double): WindowMediaPlayer. currentMedia.duration 3.当前进度(double): WindowMediaPlayer.Ctlcontrols.currentPosition,快进、快退原理,1.原理: 获取进度条百分比,获取媒体总长度。将媒体总长度x进度条百分比得到移动后的媒体时间,再赋值给控件。 2.

3、响应两个panel的3个事件(同以前一样).,快进、快退播放进度改变函数:,public void changPosition(double pos) double AllTime;/总时长 double CurrentTime;/当前时间 try pos /= 100;/获取百分比位置 AllTime = this.axWindowsMediaPlayer1.currentMedia.duration; CurrentTime = AllTime * pos; this.axWindowsMediaPlayer1.Ctlcontrols.currentPosition = CurrentTi

4、me; catch (Exception) ,进度事件响应:,private void panel1_ProSong_MouseDown(object sender, MouseEventArgs e) panel2_ProSong.Size = new Size(e.Location.X, 3); double pos = e.Location.X*100 / 300; changPosition(pos); private void panel2_ProSong_MouseDown(object sender, MouseEventArgs e) panel2_ProSong.Size =

5、 new Size(e.Location.X, 3); double pos = e.Location.X*100 / 300; changPosition(pos); ,鼠标手势事件响应:,private void panel1_ProSong_MouseEnter(object sender, EventArgs e) this.Cursor = System.Windows.Forms.Cursors.Hand; private void panel1_ProSong_MouseLeave(object sender, EventArgs e) this.Cursor = System.

6、Windows.Forms.Cursors.Default; private void panel2_ProSong_MouseEnter(object sender, EventArgs e) this.Cursor = System.Windows.Forms.Cursors.Hand; private void panel2_ProSong_MouseLeave(object sender, EventArgs e) this.Cursor = System.Windows.Forms.Cursors.Default; ,效果图:,播放时间同步、总时间同步,用到WindowsMediaP

7、layer属性: Ctlcontrols.currentPositionString当前进度,字符串格式。 currentMedia.durationString媒体总长度,字符串格式,程序设计思路,1.拖入2个定时器timer1、timer2。 2.定时器timer1用于刷新播放时间、歌曲总时间、播放进度条跟进。 3.定时器用于其他定时器维护(使能/失能其他定时器),定时器timer1:,private void timer1_Tick(object sender, EventArgs e) double alltime;/媒体总时长 double curtime;/歌曲当前时间 doubl

8、e bfb;/百分比 if (IsPlay) Try /歌曲进度条跟进 alltime = this.axWindowsMediaPlayer1.currentMedia.duration; curtime = this.axWindowsMediaPlayer1.Ctlcontrols.currentPosition; bfb = curtime / alltime; panel2_ProSong.Size = new Size(int)(bfb * 300), 3);,刷新播放时间、总时间,/播放时间刷新、总时间刷新 this.label_CurMusicTime.Text = this.

9、axWindowsMediaPlayer1.Ctlcontrols.currentPositionString; this.label_MaxMusicTime.Text = this.axWindowsMediaPlayer1.currentMedia.durationString; catch (Exception) IsPlay = false; this.label_CurMusicTime.Text = 00:00; this.label_MaxMusicTime.Text = 00:00; ,播放完下一曲:,if (this.axWindowsMediaPlayer1.playSt

10、ate.ToString() = wmppsStopped) try MusicNum+; play(namesMusicNum); catch (Exception) IsPlay = false; this.label_CurMusicTime.Text = 00:00; this.label_MaxMusicTime.Text = 00:00; ,暂停时 停止定时器,else timer1.Enabled = false; ,定时器timer2:,private void timer2_Tick(object sender, EventArgs e) /播放时开启定时器1 if (IsP

11、lay = true) timer1.Enabled = true; ,11.动态标题实现,1.动态标题制作 2.当前播放时间同步、总时间同步、进度条跟进,动条标题栏制作原理,1.拖入一个panel控件,再将一个label控件拖入到panel中。用一个定时器改变label相对panel的位置,从而达到移动效果。 2.设定一个Bool 变量Dierction,false左移,true右移。 3.设定一个int 变量LocationX,记录X轴位置 4.当左移超过最大偏移量时右移,当右移超过最大偏移量时左移。,panel,Label,MaxL,Label.width,Panel.width,100

12、,MaxL : Label左移时相对panel的最大X偏移量坐标(可以为负数)。 Label.width : Label长度。 Panel.width : Panel长度。 100 : 将Label移动到相对panel左边100个单位处。 MaxL = Panel.width (Label.width + 100),左移原理图解:,panel,Label,MaxL=100,Label.width,Panel.width,MaxL = 100 : Label相对Panel左移100个单位 Label.width : Label长度。 Panel.width : Panel长度。 右移只需用到Ma

13、xL=100.,右移原理图解:,左移:,int LoacationX = 100; /标题移动方向 false左移 true右移 Boolean Direction = false; private void timer3_Tick(object sender, EventArgs e) if(Direction=false) label_MusicName.Location = new Point(LoacationX-, label_MusicName.Location.Y); if (LoacationX = (int)(100-label_MusicName.Size.Width) D

14、irection = true;/换成右移 ,右移:,if(Direction=false) label_MusicName.Location = new Point(LoacationX-, label_MusicName.Location.Y); if (LoacationX = (int)(100-label_MusicName.Size.Width) Direction = true;/换成右移 ,12.动态标题栏同步歌曲,1.用到一个WindowsMediaPlayer的一个属性: WindowsMediaPlayer1.currentM 当前媒体名(string) 2.在动态栏定时器中获取媒体名,在赋值给控件,左移:,pri

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论