版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026安徽芜湖市第一人民医院第一次招聘劳务派遣人员16人备考题库及参考答案详解(达标题)
- 2026福建漳州市龙文区教育局招聘43人备考题库及完整答案详解(名校卷)
- 2026年公关服务合同协议企业危机公关服务条款
- 2026浙江农林大学继续教育学院劳务派遣工作人员招聘1人备考题库(易错题)附答案详解
- 混凝土浇筑工艺改进方案
- 钢结构养护及维护管理方案
- 混凝土模板拆除方案
- 2026山东省新动能基金管理有限公司校园招聘8人备考题库含答案详解ab卷
- 2026四川乐山市峨边彝族自治县招聘县属国有企业人员27人备考题库含答案详解【满分必刷】
- 2026黑龙江大庆市肇源县医疗卫生专项人才引进22人备考题库及完整答案详解【全优】
- 学校资产管理自查报告及整改措施
- 3.12.2024新苏教版小学科学三年级下册第三单元第12课《石头上的植物》同步课件
- 金华义乌市供销联社下属企业2026年招聘6人笔试模拟试题及答案解析
- 2026届湖北省武汉普通高中高三3月调考数学+答案
- 学校推进生源转型期的小班化教学工作方案:让生源减少的“挑战”转化为办学质量提升的“红利”
- (一模)包头市2026年高三第一次模拟考试地理试卷(含答案)
- 2026年湖南省长沙市高职单招职业技能考试题库带答案详解
- 2026年无锡科技职业学院单招综合素质考试题库有答案详解
- DB54∕T 0601-2026 农作物品种生产示范技术规程 青稞
- XX区实验学校初中部2026年春季学期中期学生社团管理实施方案
- 2026年六安职业技术学院单招职业适应性考试题库及答案详解(夺冠)
评论
0/150
提交评论