用C#怎样做一个像QQ音乐一样的播放器呢,不需要那么多功能,只要能实现简单的搜歌,播放本地音乐功能即可,请高手指教..

解决方案 »

  1.   

    http://download.csdn.net/source/480218
      

  2.   

    http://51aspx.com/S/%E9%9F%B3%E4%B9%90%E6%92%AD%E6%94%BE%E5%99%A8.html
      

  3.   

    你要学点软件设计,如果想做功能简单一点的可以用Flash做个播放器也可
    ,不过要用到Flash中的编程,不过简单多了,
    优酷、酷六网上有相关视频可以看着学学 
      

  4.   

    http://hi.baidu.com/qinyun118/blog/item/cbae6a02d480259ad53f7c48.html
      

  5.   

    namespace ShockwaveFlashPlayer
    {
        public partial class SWFPlayer : Form
        {
            public SWFPlayer()
            {
                InitializeComponent();            axShockwaveFlash1.Size = new Size(this.Width, this.Height - 130);
                axShockwaveFlash1.Movie = "";            lblReadyState.Location = new Point(0, this.Height - 125);
                lblScale.Location = new Point(this.Width - lblScale.Width - 10, this.Height - 125);
                trackBar1.Location = new Point(0, this.Height - 100);
            }        private void SWFPlayer_Load(object sender, EventArgs e)
            {
                if (axShockwaveFlash1.ReadyState == 4)
                {
                    lblReadyState.Text = "完成";
                    lblScale.Text = "0/" + axShockwaveFlash1.TotalFrames.ToString();
                    btnPlay.Enabled = true;
                    trackBar1.Enabled = true;
                }
            }        #region ShockwaveFlash 控件加载文件信息
            private void axShockwaveFlash1_OnReadyStateChange(object sender, AxShockwaveFlashObjects._IShockwaveFlashEvents_OnReadyStateChangeEvent e)
            {
                switch (axShockwaveFlash1.ReadyState)
                {
                    case 0:
                        lblReadyState.Text = "正在载入......";
                        break;
                    case 1:
                        lblReadyState.Text = "未初始化";
                        break;
                    case 2:
                        lblReadyState.Text = "已载入";
                        break;
                    case 3:
                        lblReadyState.Text = "正在交互......";
                        break;
                    case 4:
                        lblReadyState.Text = "完成";
                        lblScale.Text = axShockwaveFlash1.FrameNum + "/" + axShockwaveFlash1.TotalFrames.ToString();
                        trackBar1.Maximum = axShockwaveFlash1.TotalFrames;
                        btnPlay.Enabled = true;
                        btnBack.Enabled = true;
                        btnForward.Enabled = true;
                        trackBar1.Enabled = true;
                        break;
                }
            }        private void axShockwaveFlash1_OnProgress(object sender, AxShockwaveFlashObjects._IShockwaveFlashEvents_OnProgressEvent e)
            {
                lblReadyState.Text = "已下载 " + axShockwaveFlash1.PercentLoaded() + "%......";
            }
            #endregion        #region 功能键(播放、后退、前进)
            //播放
            private void btnPlay_Click(object sender, EventArgs e)
            {
                if (axShockwaveFlash1.Playing)
                {
                    axShockwaveFlash1.Stop();
                    btnPlay.Text = "►";
                    lblReadyState.Text = "暂停";
                    timer1.Stop();
                }
                else
                {
                    axShockwaveFlash1.Play();
                    btnPlay.Text = "■";
                    lblReadyState.Text = "播放";
                    timer1.Start();
                }
            }
            //后退
            private void btnBack_Click(object sender, EventArgs e)
            {
                //axShockwaveFlash1.Back(); //此方法只能后退一帧
                axShockwaveFlash1.GotoFrame(axShockwaveFlash1.FrameNum - 20);
                btnPlay_Click(null, null); //播放
            }
            //前进
            private void btnForward_Click(object sender, EventArgs e)
            {
                //axShockwaveFlash1.Forward(); //前进一帧
                axShockwaveFlash1.GotoFrame(axShockwaveFlash1.FrameNum + 20);
                btnPlay_Click(null, null); //播放
            }
            #endregion        #region 暂无内容
            private void axShockwaveFlash1_FlashCall(object sender, AxShockwaveFlashObjects._IShockwaveFlashEvents_FlashCallEvent e)
            {
                //XmlDocument doc = new XmlDocument();
                //doc.LoadXml(e.request);            //XmlNodeList list = doc.GetElementsByTagName("arguments");
                //int width = Convert.ToInt32(list[0].FirstChild.InnerText);
                //int height = Convert.ToInt32(list[0].ChildNodes[1].InnerText);
                //if (width > axShockwaveFlash1.Width)
                //{
                //    this.Width += width - axShockwaveFlash1.Width;
                //}
                //if (height > axShockwaveFlash1.Height)
                //{
                //    this.Height += height - axShockwaveFlash1.Height;
                //}
            }        private void axShockwaveFlash1_FSCommand(object sender, AxShockwaveFlashObjects._IShockwaveFlashEvents_FSCommandEvent e)
            {        }
            #endregion        //打开本地文件
            private void tsmiOpenFile_Click(object sender, EventArgs e)
            {
                DialogResult dr = openFile.ShowDialog();
                if (dr == DialogResult.OK)
                {
                    axShockwaveFlash1.Movie = openFile.FileName;
                    //axShockwaveFlash1.CallFunction("<invoke name=\"loadAndPlayVideo\" returntype=\"xml\"><arguments><string>" + openFile.FileName + "</string></arguments></invoke>");
                }
            }        #region 文件拖放
            private void FlashControl_DragEnter(object sender, DragEventArgs e)
            {
                if (e.Data.GetDataPresent(DataFormats.FileDrop))
                {
                    e.Effect = DragDropEffects.All;
                }
            }        private void FlashControl_DragDrop(object sender, DragEventArgs e)
            {
                string swf = ((System.Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString();            if (Path.GetExtension(swf).ToLower() == ".swf")
                {
                    axShockwaveFlash1.Movie = swf;
                }
                else
                {
                    MessageBox.Show("文件必须是 swf 格式!");
                }
            }
            #endregion        //计数器
            private void timer1_Tick(object sender, EventArgs e)
            {
                lblScale.Text = axShockwaveFlash1.FrameNum + "/" + axShockwaveFlash1.TotalFrames.ToString();
                trackBar1.Value = axShockwaveFlash1.FrameNum;
            }        //拖动 滑动条 滑块
            private void trackBar1_Scroll(object sender, EventArgs e)
            {
                axShockwaveFlash1.GotoFrame(trackBar1.Value);
                lblScale.Text = axShockwaveFlash1.FrameNum + "/" + axShockwaveFlash1.TotalFrames.ToString();
                btnPlay_Click(null, null); //播放
            }    }
    }
      

  6.   


    string sample = @"D:\4Music\Adele - 21(Deluxe Edition)\01 - Rolling in the Deep.mp3";
    var graphBuilder = new FilterGraph();
    var mediaControl = graphBuilder as IMediaControl;
    mediaControl.RenderFile(sample);
    mediaControl.Run();Try the code in Console or any project.
    http://nonocast.cn/?p=2737