学生作品说明模板.doc_第1页
学生作品说明模板.doc_第2页
学生作品说明模板.doc_第3页
学生作品说明模板.doc_第4页
学生作品说明模板.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

漳州职业技术学院计算机工程系C#程序设计综 合 实 训 说 明 书题目: 播放器 班级:网络技术二班学号: 0906008229姓名: 李 春 林漳州职业技术学院计算机工程系2011年6月10日目 录前言 功能一(或单元一) 功能二(或单元一) 前 言(说明实训的内容,主要介绍功能模块,采用的方法等)实训的内容引用window自带的“window media player”控件,实现音乐播放、暂停、停止、前进一首、后退一首、静音和声音控制。当然了歌曲的循环播放、单首播放和随机播放是不可少的。还有歌曲的一些添加,如一个文件夹下多首歌曲一起添加,歌曲的删除,歌曲的查找等等。 音乐作为主程序,辅助的有个截屏程序。截屏是现在很多程序都必带的程序,很多情况下,多要用到它。 功能简介实施步骤步骤一:添加音乐添加音乐文件:除了视频文件外,其它音乐文件格式都可以用。但是程序是默认为MP3格式的,打开时,首选是MP3格式。音乐可以多个被选中,一起添加到lvplqylist中。单机“删除歌曲”可以删除被选中的歌曲。效果截图:步骤二:基本控件功能 点击“播放”或者双击lvplqylist空白处会自动默认为首歌播放。当然有些人认为第一首歌不好听,喜欢其它的,你就可以选中歌曲,再点击播放;或者双击歌曲,会播放选中的歌曲。歌曲播放后,进程条和TimeLabel标签会清楚的知道歌曲的播放程度和时间。同时“播放”变成“暂停”,点击“暂停”,歌曲会暂停在原来的位置。 点击“|”或者“|”可以播放上一首或者下一首,点击“停止”,将会介绍歌曲的播放。最后傍边还有“单首、“循环”和“随机”三个单选按钮,它们分别实现是选中的歌曲重复的播放、所有歌曲重复的播放和随机任意的播放歌曲。移动trackBar1空间可以选择音量的大小,或者点击musickg控件可以使音乐静音了。效果截图:步骤三:其它button功能点击“增加网络音乐”可以创建一个歌曲文件,添加到lvplqylist里,但是它却不能实现被播放,只是当作一个不可用的文件。在TxtSongName文本里输入想要查找的歌曲的完整文件名,可以查找lvplqylist里是否有该歌曲。效果截图:步骤四:退出 一般情况下,我们都喜欢程序不显示在桌面上或者我们不小心点到右上角的,而程序不会被退出,将最小化在任务栏中的通知栏那里,右击图标,会跳出菜单栏,点击“主程序”还回form窗体,点击”截屏”运行截屏小程序,点击“退出”将会退出所有程序。效果截图:步骤四:截屏 点击“截屏”会截下当前桌面屏幕,放入form3中。然后鼠标变成“+”现状。按下鼠标到鼠标结束时会截下按下鼠标点到鼠标结束点之间的长方形区域的图。然后你可以保存图片。我设置保存固定位置为“d:123.jpg”。点击退出,可以“退出”截屏窗口。效果截图:程序代码1. Form1代码:using System.IO;namespace ex092 public partial class Form1 : Form public Form1() InitializeComponent(); public static string sstr = ; private void AddSongButton_Click(object sender, EventArgs e) try openFileDialog1.InitialDirectory = d:; openFileDialog1.Filter = mp3文件(*.mp3)|*.mp3|all files(*.*)|*.*; openFileDialog1.Multiselect = true; openFileDialog1.Title = 请选择媒体文件; DialogResult result = openFileDialog1.ShowDialog(); / 打开对话框选择音乐文件 if (result = DialogResult.OK) / 如果选择了音乐文件 string FilePath = openFileDialog1.FileNames; / 获取音乐完整文件路径 / 获取音乐名 for (int i = 0; i 0) LvPlayList.SelectedItems0.Remove(); private int CurrPlayID;/用于保存当前音乐列表的正在播放的音乐位置索引值 private void musicPlay()/ 播放歌曲 / 如果有选中要播放的歌曲 if (LvPlayList.SelectedItems.Count 0) / 设置控件播放路径 Mp3Player.URL = LvPlayList.SelectedItems0.Tag.ToString(); Mp3Player.Ctlcontrols.play();/ 开始播放 / 显示当前播放歌曲名 SongLabel.Text = 当前音乐: + LvPlayList.SelectedItems0.Text.ToString(); timer1.Enabled = true; / 开启时钟延时功能 PlayButton.Text = 暂停; CurrPlayID = LvPlayList.SelectedItems0.Index; else if (LvPlayList.Items.Count0) LvPlayList.Items0.Selected = true; musicPlay(); / 双击播放列表播放歌曲 private void PlayButton_Click(object sender, EventArgs e) / 播放 if (PlayButton.Text = 播放) if (Mp3Player.URL.Length = 0) musicPlay(); else Mp3Player.Ctlcontrols.play(); PlayButton.Text = 暂停; else / 暂停 Mp3Player.Ctlcontrols.pause(); PlayButton.Text = 播放; private void StopButton_Click(object sender, EventArgs e) Mp3Player.Ctlcontrols.stop(); PlayButton.Text = 播放; private void PreButton_Click(object sender, EventArgs e) / 如果是第一首 if (CurrPlayID = 0) CurrPlayID = LvPlayList.Items.Count - 1; / 移到最后一首 LvPlayList.ItemsCurrPlayID.Selected = true; else CurrPlayID-; / 移到上一首 LvPlayList.ItemsCurrPlayID.Selected = true; musicPlay(); / 播放 private void Nextbutton_Click(object sender, EventArgs e) / 如果是最后一首 if (CurrPlayID = LvPlayList.Items.Count - 1) LvPlayList.Items0.Selected = true; / 移到第一首 CurrPlayID = 0; else CurrPlayID+; / 移到下一首 LvPlayList.ItemsCurrPlayID.Selected = true; musicPlay(); / 播放 private void LvPlayList_DoubleClick(object sender, EventArgs e) musicPlay(); private void timer1_Tick(object sender, EventArgs e) / 读取总长度 int duration = Convert.ToInt32(Mp3Player.currentMedia.duration); if (duration = 0) / 如果读取的总长度为0,表示未完成初始化 return; / 返回 / 设置进度条最大值 if (PBSongLength.Maximum != duration) PBSongLength.Minimum = 0; / 进度条最小值 / 进度条最大值,要强制从double转成int型 PBSongLength.Maximum = duration; / 设置显示进度 if (TimeLabel.Text != Mp3Player.Ctlcontrols.currentPositionString) TimeLabel.Text = 时间: + Mp3Player.Ctlcontrols.currentPositionString; PBSongLength.Value = Convert.ToInt32(Mp3Player.Ctlcontrols.currentPosition); / 如果播放完毕 if (TimeLabel.Text = Mp3Player.currentMedia.durationString) timer1.Enabled = false; / 关闭时钟 private void Mp3Player_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e) if (e.newState = Convert.ToInt32(WMPLib.WMPPlayState.wmppsMediaEnded) timer2.Enabled = true; private void timer2_Tick(object sender, EventArgs e) PlayButton.Text = 播放; PBSongLength.Value = 0; TimeLabel.Text = 00:00; if (radioButton1.Checked) Nextbutton_Click(null, null); / 直接下一首 else if (radioButton2.Checked) TimeLabel.Text = radioButton2.Text; Mp3Player.Ctlcontrols.play(); else if (radioButton3.Checked) Random r = new Random(); / 生成随机播放的ID CurrPlayID = r.Next(0, LvPlayList.Items.Count); LvPlayList.ItemsCurrPlayID.Selected = true; musicPlay(); / 播放 else / 如果不是最后一首 if (CurrPlayID LvPlayList.Items.Count - 1) CurrPlayID+; / 移到下一首 LvPlayList.ItemsCurrPlayID.Selected = true; musicPlay(); / 播放 timer2.Enabled = false; private void SearchButton_Click(object sender, EventArgs e) string FindSongName = TxtSongName.Text; / 获取要搜索的文件名 string selectsong = ; / 从播放列表中遍历搜索 for (int i = 0; i LvPlayList.Items.Count; i+) / 如果音乐名包含要搜索的关键字 if (LvPlayList.Itemsi.Text = FindSongName) selectsong = true; LvPlayList.Itemsi.Selected = true;/ 将它设成选中 break; / 搜索结束 if (selectsong != true) MessageBox.Show(没有找到相应的歌曲文件!); private void Form1_Load(object sender, EventArgs e) private void NetworkMusic_Click(object sender, EventArgs e) Form2 form2 = new Form2(); /注册form2_MyEvent方法的MyEvent事件 form2.MyEvent += new MyDelegate(form2_MyEvent); form2.Show(); void form2_MyEvent(string text) string FilePath = sstr; / 获取音乐完整文件路径 / 获取音乐名 string SongName = FilePath.Substring(FilePath.LastIndexOf() + 1); ListViewItem lv = new ListViewItem(SongName); / 根据音乐名生成一个列表项 lv.Tag = FilePath; / 将音乐名的完整路径存放在列表项的Tag标记属性中,方便读取 lv.ImageIndex = 1; LvPlayList.Items.Add(lv); / 添加 private void musickg_Click(object sender, EventArgs e) if (Mp3Player.settings.mute = true) Mp3Player.settings.mute = false; else Mp3Player.settings.mute = true; private void trackBar1_Scroll(object sender, EventArgs e) Mp3Player.settings.volume = trackBar1.Value; private void showfiles(string path, ListBox listBox1) string Paths =d:abc; DirectoryInfo dir = new DirectoryInfo(Paths); if (dir.Exists) MessageBox.Show(sfsdfs=f); else MessageBox.Show(不存在); foreach (FileInfo f in dir.GetFiles(*.mp3) string FilePath = f.FullName; / 获取音乐完整文件路径 / 获取音乐名 string SongName = FilePath.Substring(FilePath.LastIndexOf() + 1); ListViewItem lv = new ListViewItem(SongName); / 根据音乐名生成一个列表项 lv.Tag = FilePath; / 将音乐名的完整路径存放在列表项的Tag标记属性中,方便读取 lv.ImageIndex = 1; LvPlayList.Items.Add(lv); / 添加 foreach (DirectoryInfo f in dir.GetDirectories() showfiles(f.FullName, listBox1); private void Form1_FormClosing(object sender, FormClosingEventArgs e) e.Cancel = true;/ 取消关闭窗体 this.Hide(); this.ShowInTaskbar = false;/取消窗体在任务栏的显示 this.notifyIcon1.Visible = true;/显示托盘图标 private void 主程序ToolStripMenuItem_Click(object sender, EventArgs e) this.Show(); this.ShowInTaskbar = true; this.notifyIcon1.Visible = false; private void 退出ToolStripMenuItem_Click(object sender, EventArgs e) this.Dispose(true); Application.ExitThread(); private void toolStripMenuItem1_Click(object sender, EventArgs e) Form3 form3 = new Form3(); this.Hide(); form3.Show(); 2. form2代码 namespace ex092 public delegate void MyDelegate(string text); public partial class Form2 : Form public event MyDelegate MyEvent; public Form2() InitializeComponent(); private void Form2_Load(object sender, EventArgs e) private void button1_Click(object sender, EventArgs e) MyEvent(this.textBox1.Text); this.Close(); private void textBox1_TextChanged(object sender, EventArgs e) Form1.sstr = textBox1.Text; private void button2_Click(object sender, EventArgs e) this.Close(); 3. form3代码using System.IO;namespace ex092 public partial class Form3 : Form private Bitmap MyImage = null; private bool StartedCrop = false; Point StartPoint = new Point(0, 0); Rectangle SelectRect = new Rectangle(); int DeltaX = 0; int DeltaY = 0; public Form3() InitializeComponent(); System.Runtime.InteropServices.DllImportAttribute(gdi32.dll) private static extern bool BitBlt( IntPtr hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, IntPtr hdcSrc, int nXSrc, int nYSrc, System.Int32 dwRop ); System.Runtime.InteropServices.DllImportAttribute(gdi32.dll) private static extern IntPtr CreateDC( string lpszDriver, string lpszDevice, string lpszOutput, IntPtr lpInitData ); private void Form3_Load(object sender, EventArgs e) this.Visible = false; IntPtr dc1 = CreateDC(DISPLAY, null, null, (IntPtr)null); Graphics g1 = Graphics.FromHdc(dc1); MyImage = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, g1); Graphics g2 = Graphics.FromImage(MyImage); Visible = false; dc1 = g1.GetHdc(); IntPtr dc2 = g2.GetHdc(); BitBlt(dc2, 0, 0, Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, dc1, 0, 0, 13369376); g1.ReleaseHdc(dc1); g2.ReleaseHdc(dc2); this.Visible = true; this.SetBounds(0, 0, Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height); this.Cursor = Cursors.Cross; private void Form3_MouseDown(object sender, MouseEventArgs e) if (StartedCrop = false) DeltaX = 0; DeltaY = 0; StartedCrop = true; StartPoint = new Point(e.X, e.Y); SelectRect.Width = 0; SelectRect.Height = 0; Invalidate(); private void Form3_MouseMove(object sender, MouseEventArgs e) Form thisform = (Form)sender; if (StartedCrop) DeltaX = e.X - StartPoint.X; if (DeltaX 0) DeltaX = 0; DeltaY = e.Y - StartPoint.Y; if (DeltaY 0) DeltaY = 0; ControlPaint.DrawReversibleFrame(thisform.RectangleToScreen(SelectRect), Color.Black, FrameStyle.Dashed); private void Form3_MouseUp(object sender, MouseEventArgs e) StartedCrop = false; S

温馨提示

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

评论

0/150

提交评论