新手上路,高手勿进!

窗体设计:

实现效果:

实现代码:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;





using System.Data.SqlClient;

using System.Runtime.InteropServices;

using System.IO;

using System.Collections;

using System.Media;





namespace Music {

    public partial class LenMusic : Form {

        public LenMusic() {

            InitializeComponent();

        }





        #region

        string strMusic = "";//音乐路径

        string strImage = "";//图片路径

        string strGeci = "";//歌词路径



        ArrayList musicNameList = new ArrayList();//所有文件的名称     

        ArrayList imageNameList = new ArrayList();//所有图片的名称

        ArrayList geciNameList = new ArrayList();//所有歌词路径



        int allcount = 0;//所有条数

        int nowcount = 0;//当前歌曲的索引

        string abcMusic = "";//记录当前播放的歌曲名称,用于单曲循环播放



        bool MaxOrNo = false;//判断一个窗体是否是最大化



        int txtn = 0;//txt文件的行数

        #endregion



        [DllImport("kernel32")]

        private static extern long WritePrivateProfileString(string section, string key, string val, string filepath);



        [DllImport("kernel32")]

        private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retval, int size, string filePath);



        private string strFilePath = Application.StartupPath + "\\Path.ini";//获取INI文件路径

        private string strSec = "";//INI文件名     



        /// <summary>

        /// 自定义读取INI文件中的内容方法

        /// </summary>

        /// <param name="Section">键</param>

        /// <param name="key">值</param>

        /// <returns></returns>

        private string ContentValue(string Section, string key) {

            StringBuilder temp = new StringBuilder(1024);

            GetPrivateProfileString(Section, key, "", temp, 1024, strFilePath);

            return temp.ToString();

        }



        #region Load事件

        private void LenMusic_Load(object sender, EventArgs e) {

            //设置层显示

            grbSet.Visible = false;

            pnlMusic.Visible = true;

            //歌词路径赋值

            strGeci = Application.StartupPath + "\\txtGeCi";



            #region 获取歌曲名称,图片名称,歌词名称

            if (File.Exists(strFilePath))//读取时先要判读INI文件是否存在

            {

                strSec = Path.GetFileNameWithoutExtension(strFilePath);

                strMusic = ContentValue(strSec, "musicPath");

                strImage = ContentValue(strSec, "imagePath");

                //设置路径的默认值

                string XiangDuiPath = System.AppDomain.CurrentDomain.BaseDirectory;

                if (strMusic.Equals("")) {

                    strMusic = XiangDuiPath + @"MP3";

                }

                if (strImage.Equals("")) {

                    strImage = XiangDuiPath + @"images";

                }

            } else {

                MessageBox.Show("INI文件不存在");

                return;

            }



            // 取得指定路径下所有符合条件的文件

            string[] strFiles = Directory.GetFiles(strMusic, "*.*");

            // 取得指定路径下所有目录

            //string[] strDirs = Directory.GetDirectories(strMusic);           





            //foreach (string lujing in strDirs) {

            //    musicList.Add(lujing);

            //}

            foreach (string name in strFiles) {

                musicNameList.Add(GetFileName(name));

            }



            //获取指定目录下所有图片的名称

            string[] strFilesImage = Directory.GetFiles(strImage, "*.*");

            foreach (string name in strFilesImage) {

                imageNameList.Add(GetFileName(name));

            }



            //获取指定目录下所有歌词的名称

            string[] strFilesGeci = Directory.GetFiles(strGeci, "*.*");

            foreach (string name in strFilesGeci) {

                geciNameList.Add(GetFileName(name));

            }

            #endregion



            #region ListView设置

            listViewAll.GridLines = true;

            listViewAll.FullRowSelect = true;

            listViewAll.View = View.Details;//使用哪一个视图

            listViewAll.Scrollable = false;

            listViewAll.MultiSelect = false;

            listViewAll.HeaderStyle = ColumnHeaderStyle.Clickable;



            listViewAll.Columns.Add("序号", 40, HorizontalAlignment.Right);

            listViewAll.Columns.Add("歌曲", 173, HorizontalAlignment.Left);



            //设置行高

            ImageList list = new ImageList();

            list.ImageSize = new Size(1, 30);

            listViewAll.SmallImageList = list;



            //加载ListView数据

            for (int i = 0; i < musicNameList.Count; i++) {

                ListViewItem lvi = new ListViewItem();

                lvi.SubItems.Clear();

                lvi.Text = (i + 1).ToString();//序号列

                lvi.SubItems.Add(musicNameList[i].ToString());//歌曲名称

                listViewAll.Items.Add(lvi);

            }

            #endregion





            #region 歌曲默认为第一首

            try {

                //歌曲默认为第一首

                labName.Text = musicNameList[0].ToString();

            } catch {

                labName.Text = "歌曲名称";

            }

            #endregion





            //歌曲总数

            allcount = musicNameList.Count;





            //设置模式

            this.axWindowsMediaPlayer1.uiMode = "None";





            #region 声音加载



            this.tbVoice.Minimum = 0;//声音最小值

            this.tbVoice.Maximum = 100;//声音最大值

            //设置值

            this.tbVoice.Value = axWindowsMediaPlayer1.settings.volume;

            #endregion

#region 透明 设置

#region 设置pnlFontScoll

            this.pnlMusic.SendToBack();//将背景图片放到最下面

            this.pnlFontScoll.BackColor = Color.Transparent;//将Panel设为透明

            this.pnlFontScoll.Parent = this.pnlMusic;//将panel父控件设为背景图片控件

            this.pnlFontScoll.BringToFront();//将panel放在前面            

            #endregion





            #region 歌词透明,歌词字体设置

            //透明Label

            this.pbPicture.SendToBack();

            this.labGeci.BackColor = Color.Transparent;

            this.labGeci.Parent = this.pbPicture;

            this.labGeci.BringToFront();





            //设置字体和颜色

            this.labGeci.ForeColor = Color.Yellow;

            this.labGeci.Font = new Font("华文行楷", 14);

            #endregion





            #region 透明层 设置picturebox

            this.pbPicture.SendToBack();//将背景图片放到最下面

            this.pnlTouMing.BackColor = Color.Transparent;//将Panel设为透明

            this.pnlTouMing.Parent = this.pbPicture;//将panel父控件设为背景图片控件

            this.pnlTouMing.BringToFront();//将panel放在前面           

            #endregion





            //listViewAll 不支持背景色透明



            #endregion





        }

        #endregion





        #region 获取文件名称

        public static string GetFileName(String path) {

            if (path.Contains("\\")) {

                string[] arr = path.Split('\\');

                return arr[arr.Length - 1];

            } else {

                string[] arr = path.Split('/');

                return arr[arr.Length - 1];

            }

        }

        #endregion





        #region 系统设置

        private void pbSet_Click(object sender, EventArgs e) {

            pnlMusic.Visible = false;

            grbSet.Visible = true;





            //从INI文件中读取数据

            if (File.Exists(strFilePath))//读取时先要判读INI文件是否存在

            {

                strSec = Path.GetFileNameWithoutExtension(strFilePath);

                txtMusicPath.Text = ContentValue(strSec, "musicPath");

                txtImagePath.Text = ContentValue(strSec, "imagePath");

            } else {

                MessageBox.Show("INI文件不存在");

                return;

            }





        }





        //打开音乐路径

        private void btnMusicPath_Click(object sender, EventArgs e) {

            OpenFileDialog open = new OpenFileDialog();

            open.Title = "请选择音乐文件!";

            if (open.ShowDialog() == DialogResult.OK) {

                txtMusicPath2.Text = open.FileName;

            }



        }



        private void btnMusicPath_Click_1(object sender, EventArgs e) {

            fbdMusic.Description = "请选择音乐文件!";

            if (fbdMusic.ShowDialog() == DialogResult.OK) {

                txtMusicPath.Text = fbdMusic.SelectedPath;

            }

        }



        //打开音乐图片路径

        private void btnImagePath_Click(object sender, EventArgs e) {

            //fbdImages.t

            fbdImages.Description = "选择的图片将在播放音乐时作为背景图片!";

            if (fbdImages.ShowDialog() == DialogResult.OK) {

                txtImagePath.Text = fbdImages.SelectedPath;

            }

        }



        //保存,成功则自动关闭

        private void btnSave_Click(object sender, EventArgs e) {

            if (txtMusicPath.Text.Trim().Equals("")) {

                MessageBox.Show("音乐路径不能为空!");

                return;

            }

            if (txtImagePath.Text.Trim().Equals("")) {

                MessageBox.Show("图片路径不能为空!");

                return;

            }



            //StreamWriter sw = new StreamWriter(System.AppDomain.CurrentDomain + "\\Path.ini",true);

            //sw.WriteLine(txtMusicPath.Text);

            //sw.WriteLine(txtImagePath.Text);

            //sw.Flush();

            //sw.Close();

            try {

                strSec = Path.GetFileNameWithoutExtension(strFilePath);

                WritePrivateProfileString(strSec, "musicPath", txtMusicPath.Text.Trim(), strFilePath);

                WritePrivateProfileString(strSec, "imagePath", txtImagePath.Text.Trim(), strFilePath);

                MessageBox.Show("保存成功!");

                grbSet.Visible = false;

                pnlMusic.Visible = true;

            } catch (Exception ex) {

                MessageBox.Show(ex.Message);

                return;

            }

        }





        //返回主界面

        private void btnReturn_Click(object sender, EventArgs e) {

            grbSet.Visible = false;

            pnlMusic.Visible = true;

        }

        #endregion





        #region  从列表中读取选中第一列的值,最上面显示歌曲名称

        private void listViewAll_SelectedIndexChanged(object sender, EventArgs e) {

            if (listViewAll.SelectedIndices != null && listViewAll.SelectedIndices.Count > 0) {

                ListView.SelectedIndexCollection c = listViewAll.SelectedIndices;

                string suoyin = listViewAll.Items[c[0]].Text;

                nowcount = Convert.ToInt32(suoyin) - 1;

                //改变歌曲名称

                labName.Text = musicNameList[Convert.ToInt32(suoyin) - 1].ToString();

                try {

                    //显示图片

                    pbPicture.Image = new Bitmap(strImage + "\\" + imageNameList[Convert.ToInt32(suoyin) - 1].ToString());

                    ReadTXT(labGeci);

                } catch (Exception) {





                }

            }

        }

        #endregion





        #region Listview 双击事件,播放音乐

        private void listViewAll_DoubleClick(object sender, EventArgs e) {

            axWindowsMediaPlayer1.URL = strMusic + "\\" + labName.Text;

            axWindowsMediaPlayer1.Ctlcontrols.play();





            //歌词

            ReadTXT(labGeci);

        }

        #endregion





        #region 播放/暂停

        private void btnStop_Click(object sender, EventArgs e) {

            try {

                #region SoundPlayer 只可以播放波形文件(.wav格式)

                //System.Media.SoundPlayer sp=new System.Media.SoundPlayer();

                ////SoundPlayer sp = new SoundPlayer();

                //sp.SoundLocation = strMusic +"\\"+ labName.Text;               

                //sp.Load();

                //sp.Play();

                #endregion





                if (btnStart.Text == ">") {

                    if (radOneYes.Checked == true) {

                        axWindowsMediaPlayer1.URL = strMusic + "\\" + abcMusic;

                    } else {

                        //播放  

                        axWindowsMediaPlayer1.URL = strMusic + "\\" + labName.Text;

                    }

                   

                    //记录播放位置

                    if (tbMusic.Value != 0) {

                        axWindowsMediaPlayer1.Ctlcontrols.currentPosition = tbMusic.Value;

                    }

                    axWindowsMediaPlayer1.Ctlcontrols.play();

                    //歌词

                    ReadTXT(labGeci);

                    timerGeci.Enabled = true;





                    timer1.Enabled = true;

                    btnStart.Text = "||";





                    //透明层显示

                    pnlTouMing.Visible = false;





                    #region 一些属性

                    //string Duration = this.axWindowsMediaPlayer1.currentMedia.getItemInfo("Duration");//持续时间(秒)

                    //string Title = this.axWindowsMediaPlayer1.currentMedia.getItemInfo("Title");//媒体标题

                    //string Author = this.axWindowsMediaPlayer1.currentMedia.getItemInfo("Author");//艺术家

                    //string Copyright = this.axWindowsMediaPlayer1.currentMedia.getItemInfo("Copyright");//版权信息

                    //string Description = this.axWindowsMediaPlayer1.currentMedia.getItemInfo("Description");//媒体内容描述

                    //string FileSize = this.axWindowsMediaPlayer1.currentMedia.getItemInfo("FileSize");//文件大小

                    //string FileType = this.axWindowsMediaPlayer1.currentMedia.getItemInfo("FileType");//文件类型

                    //string sourceURL = this.axWindowsMediaPlayer1.currentMedia.getItemInfo("sourceURL");//原始地址

                    //MessageBox.Show("持续时间:" + Duration + "||" + "媒体标题:" + Title + "||" + "艺术家:" + Author + "||" + "版权信息:" + Copyright + "||" + "媒体内容描述:" + Description + "||" + "文件大小:" + FileSize + "||" + "文件类型:" + FileType + "||" + "原始地址:" + sourceURL);

                    #endregion

                    return;

                }

                if (btnStart.Text == "||") {

                    //暂停        

                    axWindowsMediaPlayer1.Ctlcontrols.pause();

                    timerGeci.Enabled = false;

                    timer1.Enabled = false;

                    btnStart.Text = ">";

                    //透明层显示

                    pnlTouMing.Visible = true;

                    return;

                }



            } catch (Exception ex) {

                MessageBox.Show(ex.Message);

                return;

            }

        }

        #endregion



        #region 上一曲

        private void btnUp_Click(object sender, EventArgs e) {

            for (int i = 0; i < allcount; i++) {

                if (musicNameList[i].ToString() == labName.Text) {

                    nowcount = i;

                }

            }

            //当前行所有大于0,则上一曲的索引最新为0

            if (nowcount > 0) {

                labName.Text = musicNameList[nowcount - 1].ToString();



                //显示图片

                pbPicture.Image = new Bitmap(strImage + "\\" + imageNameList[nowcount - 1].ToString());

                //显示歌词

                ReadTXT(labGeci);



                axWindowsMediaPlayer1.URL = strMusic + "\\" + labName.Text;

                axWindowsMediaPlayer1.Ctlcontrols.play();

                //歌词

                ReadTXT(labGeci);



            } else {

                return;

            }



        }

        #endregion



        #region 下一曲

        private void btnNext_Click(object sender, EventArgs e) {

            for (int i = 0; i < allcount; i++) {

                if (musicNameList[i].ToString() == labName.Text) {

                    nowcount = i;

                }

            }

            if (nowcount < allcount - 1) {

                labName.Text = musicNameList[nowcount + 1].ToString();

                //显示图片

                pbPicture.Image = new Bitmap(strImage + "\\" + imageNameList[nowcount + 1].ToString());

                //显示歌词

                ReadTXT(labGeci);

                axWindowsMediaPlayer1.URL = strMusic + "\\" + labName.Text;

                axWindowsMediaPlayer1.Ctlcontrols.play();

                //歌词

                ReadTXT(labGeci);



            } else {

                return;

            }

        }

        #endregion



        #region 停止

        private void btnStop_Click_1(object sender, EventArgs e) {           

            axWindowsMediaPlayer1.Ctlcontrols.stop();

           // axWindowsMediaPlayer1.URL = strMusic + "\\" + labName.Text;

            btnStart.Text = ">";

            tbMusic.Value = 0;

            labDateNow.Text = "00:00";            

        }

        #endregion



        #region 播放进度条

        //进度条

        private void timer1_Tick(object sender, EventArgs e) {

            //axWindowsMediaPlayer1.URL = strMusic + "\\" + labName.Text;

            if (axWindowsMediaPlayer1.currentMedia != null) {

                tbMusic.Maximum = Convert.ToInt32(axWindowsMediaPlayer1.currentMedia.duration);

                tbMusic.Minimum = 0;

                tbMusic.Value = Convert.ToInt32(axWindowsMediaPlayer1.Ctlcontrols.currentPosition);

                //字符串类型的当前时间

                labDateNow.Text = axWindowsMediaPlayer1.Ctlcontrols.currentPositionString.ToString();

                //字符串类型的时长

                labDateAll.Text = axWindowsMediaPlayer1.currentMedia.durationString.ToString();

            }



            //是否循环播放

            if (chkXunHuan.Checked == true) {//判断是单曲循环还是多曲循环

                if (radOneYes.Checked == true) {//单曲循环

                    //如果进度条到达最大位置,则设置为最小值

                if (tbMusic.Value == 0) {

                    btnStart.Text = ">";

                    btnStart.PerformClick();

                    }

                } else { //多曲循环

                    //如果进度条到达最大位置,并且这一曲不是最好一曲就播放下一曲

                    if (tbMusic.Value == tbMusic.Maximum && axWindowsMediaPlayer1.currentMedia.getItemInfo("Title") != musicNameList[musicNameList.Count - 1].ToString()) {

                        btnNext.PerformClick();

                    }

                }

            } 



        }

        #endregion



        #region 改变音量的大小

        private void tbVoice_Scroll(object sender, EventArgs e) {

            this.axWindowsMediaPlayer1.settings.volume = this.tbVoice.Value;

        }

        #endregion





        #region 快进、快退

        //快进,卡

        private void btnUpup_Click(object sender, EventArgs e) {

            axWindowsMediaPlayer1.Ctlcontrols.fastReverse();

        }

        //快退

        private void btnNextnext_Click(object sender, EventArgs e) {

            axWindowsMediaPlayer1.Ctlcontrols.fastForward();

        }

        #endregion



        #region 改变播放进度

        private void tbMusic_Scroll(object sender, EventArgs e) {

            axWindowsMediaPlayer1.Ctlcontrols.currentPosition = tbMusic.Value;

            //this.axWindowsMediaPlayer1.currentMedia.setItemInfo("volume", 60);

        }

        #endregion



        #region 点击声音按钮,音量是否显示

        private void pbVoice_Click(object sender, EventArgs e) {

            if (tbVoice.Visible == false) {

                tbVoice.Visible = true;

                return;

            }

            if (tbVoice.Visible == true) {

                tbVoice.Visible = false;

                return;

            }

        }



        #endregion



        #region 歌曲名称滚动字幕

        private void timerFont_Tick(object sender, EventArgs e) {           

            labName.Left = labName.Left - 3;

            if (labName.Right < 0) {

                labName.Left = pnlFontScoll.Width;

            } 

        }

        #endregion



        #region 单曲循环、多曲循环   显示

        private void chkXunHuan_CheckedChanged(object sender, EventArgs e) {

            if (chkXunHuan.Checked == true) {

                pnlXunHuan.Visible = true;

                return;

            } else {

                pnlXunHuan.Visible = false;

                return;

            }

        }



        private void chkXunHuan_MouseMove(object sender, MouseEventArgs e) {

            if (chkXunHuan.Checked == true) {

                pnlXunHuan.Visible = true;

                return;

            } 

        }



        private void pnlXunHuan_MouseMove(object sender, MouseEventArgs e) {

            if (chkXunHuan.Checked == true) {

                int a = MouseInPanel(pnlXunHuan);

                if (a == 1) {

                    pnlXunHuan.Visible = true;

                } else {

                    pnlXunHuan.Visible = false;

                }

            }

        }



        #region 判断鼠标位置是否在一个层上

        private int MouseInPanel(Panel panel) {

            //    当前的屏幕除任务栏外的工作域大小

            //    this.Width = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Width;

            //    this.Height = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height;





            //    当前的屏幕包括任务栏的工作域大小

            //    this.Width=System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width;

            //    this.Height=System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height;



            // Cursor.Position.X;//鼠标的坐标,相对于屏幕

            // Cursor.Position.Y;



            int kuan = pnlMusic.Width;

            int gao = pnlMusic.Height;



            int x = Cursor.Position.X - (System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width-kuan) / 2;

            int y = Cursor.Position.Y - (System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height-gao) / 2;



            int px = panel.Location.X;//panel位置

            int py = panel.Location.Y;

            int pw = panel.Width;//panel宽和高

            int ph = panel.Height;           

            if (x > px && y > py && x < px + pw && y < py + ph) {

                return 1;

            } else {

                return 0;

            }

        }

        #endregion





        //获取窗体鼠标的位置,但是不执行

        private void LenMusic_MouseMove(object sender, MouseEventArgs e) {

            //mx = e.X;

            //my = e.Y;

           //label2.Text = e.X + "," + e.Y;

            //mx = MousePosition.X - this.Width;

            //my = MousePosition.Y - this.Height;

        }

#endregion

#region 单曲被选中,把这首歌的名称赋值给一个变量

        private void radOneYes_CheckedChanged(object sender, EventArgs e) {

            if (radOneYes.Checked == true) {

                abcMusic = labName.Text;

            }

        }

        #endregion

        //待解决问题,选中单曲循环时,会自动播放





        #region 点击透明层上的按钮  播放

        private void pbStart_Click(object sender, EventArgs e) {

            if (btnStart.Text == ">") {

                if (radOneYes.Checked == true) {

                    axWindowsMediaPlayer1.URL = strMusic + "\\" + abcMusic;

                } else {

                    //播放  

                    axWindowsMediaPlayer1.URL = strMusic + "\\" + labName.Text;

                }



                //记录播放位置

                if (tbMusic.Value != 0) {

                    axWindowsMediaPlayer1.Ctlcontrols.currentPosition = tbMusic.Value;

                }

                axWindowsMediaPlayer1.Ctlcontrols.play();



                timer1.Enabled = true;

                btnStart.Text = "||";



                //透明层显示

                pnlTouMing.Visible = false;

                return;

            }





            if (btnStart.Text == "||") {

                //暂停        

                axWindowsMediaPlayer1.Ctlcontrols.pause();

                timer1.Enabled = false;

                btnStart.Text = ">";

                //透明层显示

                pnlTouMing.Visible = false;

            }           

            return;

        }

        #endregion





        #region 点击显示、关闭透明层

        private void pbPicture_Click(object sender, EventArgs e) {

            if (pnlTouMing.Visible == true) {

                pnlTouMing.Visible = false;

            } else {

                if (btnStart.Text == ">") {

                    pbStart.Image = new Bitmap(Application.StartupPath + "\\image\\start.png");

                } else {

                    pbStart.Image = new Bitmap(Application.StartupPath + "\\image\\start2.png");

                }

                pnlTouMing.Visible = true;

            }

        }

        #endregion



        #region 双击图片铺满屏幕、双击铺满窗体

        private void pbPicture_DoubleClick(object sender, EventArgs e) {



            #region 双击图片铺满窗体(设置窗体层的背景图片),效果不好      

            //pnlMusic.BringToFront();

            //pnlMusic.BackgroundImage = System.Drawing.Image.FromFile(strImage+"\\" + imageNameList[nowcount].ToString());

            ////设置背景图片自动适应

            //pnlMusic.BackgroundImageLayout = ImageLayout.Stretch;        





            #endregion





            #region 双击,图片全屏





            if (MaxOrNo == false) {//不是最大化  

                //把窗体设置为全屏

                this.WindowState = FormWindowState.Maximized;

                pnlMusic.Dock = System.Windows.Forms.DockStyle.Fill; //设置层的格式为充满

                pbPicture.Parent = this.pnlMusic; //设置图片的父容器为层

                pbPicture.Location = new System.Drawing.Point(0, 0);//把pbPicture的坐标设置为(0,0)

                pbPicture.BringToFront(); //把pbPicture设置为顶层

                //设置图片的宽和高

                pbPicture.Width = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width;

                pbPicture.Height = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height;               

                //设置播放按钮的位置

                pnlTouMing.Location = new System.Drawing.Point(pbPicture.Width / 2, pbPicture.Height / 2 - 300);

                MaxOrNo = true;//改变状态

                

            } else { //是最大化

                //this.WindowState = FormWindowState.Normal;

                //pbPicture = pb;

                //pnlMusic.SendToBack();

                //pnlMusic.Dock = System.Windows.Forms.DockStyle.None;

                MaxOrNo = false;//改变状态

            }

            #endregion

        }

        #endregion



        #region 是否显示歌词

        private void chkGeCi_CheckedChanged(object sender, EventArgs e) {

            if (chkGeCi.Checked == true) {

                labGeci.Visible = true;

                timerGeci.Enabled = true;

            } else {

                labGeci.Visible = false;

                timerGeci.Enabled = false;

            }

        }

        #endregion

        

        #region 读取TXT 文件

        private void ReadTXT(Label lab) {

            txtn = 0;//每次读取txt时,清空上一个TXT的行数

            string strTxtAll = "";

            string abc = strGeci + "\\" + geciNameList[nowcount].ToString();

            FileStream fs = new FileStream(abc, FileMode.Open, FileAccess.Read, FileShare.None);

            StreamReader sr = new StreamReader(fs, Encoding.GetEncoding("GB2312"));

            string line = sr.ReadLine();

            strTxtAll = line + "\r\n";

            for (int ac = 0; line != null; ac++) {

                line = sr.ReadLine();

                txtn++;

                strTxtAll += line + "\r\n";

            }

            lab.Text = strTxtAll;

            lab.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;

            sr.Close();

            fs.Close();

        }

        #endregion



        #region 歌词滚动

        private void timerGeci_Tick(object sender, EventArgs e) {

            //获取步长

            //int n = 0;//步长

            //if (axWindowsMediaPlayer1.currentMedia != null) {

            //    double nAll = axWindowsMediaPlayer1.currentMedia.duration; //获取当前歌曲的时长

            //    ReadTXT(labGeci);//给Label赋值

            //    //计算时是以毫秒为单位的 Interval=1000;

            //    n = Convert.ToInt32(labGeci.Height / nAll);

            //    //MessageBox.Show(labGeci.Height + "," + nAll.ToString());

            //    return;

            //}

            //滚动

            labGeci.Top = labGeci.Top - 3;

            if (labGeci.Bottom < 0) {

                labGeci.Top = pbPicture.Width;

            }

        }

        #endregion



    }

}


版权声明:本文为博主原创文章,未经博主允许不得转载。

Winform Windows Media Player 简易播放器 分类: WinForm 2014-07-31 20:12 589人阅读 评论(0) 收藏的更多相关文章

  1. Dijkstra with priority queue 分类: ACM TYPE 2015-07-23 20:12 4人阅读 评论(0) 收藏

    POJ 1511 Invitation Cards(单源最短路,优先队列优化的Dijkstra) //================================================= ...

  2. bzoj 1041 圆上的整点 分类: Brush Mode 2014-11-11 20:15 80人阅读 评论(0) 收藏

    这里先只考虑x,y都大于0的情况 如果x^2+y^2=r^2,则(r-x)(r+x)=y*y 令d=gcd(r-x,r+x),r-x=d*u^2,r+x=d*v^2,显然有gcd(u,v)=1且u&l ...

  3. Poj 2528 Mayor's posters 分类: Brush Mode 2014-07-23 09:12 84人阅读 评论(0) 收藏

    Mayor's posters Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 40570   Accepted: 11798 ...

  4. Ubuntu 命令行下快速打开各类文件 分类: ubuntu shell 2014-11-18 20:06 210人阅读 评论(0) 收藏

    xdg-open 命令可以用来在Ubuntu下快速打开各类文件. 下面是从 manual 文档里截取的内容: 可以知道,该命令的功能是在图形界面下按照用户的平时习惯打开各类文件,甚至是链接. 这样,我 ...

  5. House Robber 分类: leetcode 算法 2015-07-09 20:53 2人阅读 评论(0) 收藏

    DP 对于第i个状态(房子),有两种选择:偷(rob).不偷(not rob) 递推公式为: f(i)=max⎧⎩⎨⎪⎪{f(i−1)+vali,f(i−2)+vali,robi−1==0robi−1 ...

  6. Eclipse和MyEclipse的区别 分类: 编程工具 2015-07-18 11:12 23人阅读 评论(0) 收藏

    今天,在一个Q群里有人问Eclipse和MyEclipse的区别.虽然对于知道的人来说答案很简单,但是对于不知道的人来说就很难,很多问题也都是这样的,会者不难,难者不会. 其实,网上搜搜答案就挺多的, ...

  7. 解决ORA-29857:表空间中存在域索引和/或次级对象 & ORA-01940:无法删除当前连接的用户问题 分类: oracle sde 2015-07-30 20:13 8人阅读 评论(0) 收藏

    今天ArcGIS的SDE发生了一点小故障,导致系统表丢失,所以需要重建一下SDE数据库,在删除SDE用户和所在的表空间过程中遇到下面两个ORA错误,解决方法如下: 1)删除表空间时报错:ORA-298 ...

  8. 彩色模型 分类: 图像处理 Matlab 2015-01-08 20:43 364人阅读 评论(0) 收藏

    彩色模型(又称彩色空间或彩色系统)是描述色彩的一种方法,本质上,彩色模型就是坐标系统和子空间的规范,系统中的每种颜色由单个点来表示.下面介绍两种最常用的彩色模型. 一.RGB彩色模型: RGB模型是最 ...

  9. Tenegrad评价函数 分类: 图像处理 Opencv 2014-11-12 20:46 488人阅读 评论(0) 收藏

    Tenegrad函数式一种常用的图像清晰度评价函数,是一种基于梯度的函数. 在图像处理中,一般认为对焦好的图像具有更尖锐的边缘,故具有更大的梯度函数值. Tenegrad函数使用Sobel算子提取水平 ...

随机推荐

  1. 开发错误日志之IllegalArgumentException:MALFORMED

    java.lang.IllegalArgumentException: MALFORMED 上面存在中文问题是因为java.util.zip下的格式转换有问题 ,jdk中的zip存在字符编码的问题. ...

  2. 修改hosts使用谷歌服务

    原文链接如下: http://www.findspace.name/res/72#_1

  3. jQuery插件综合应用(二)文字为主的页面

    一.介绍 文字内容是每个网站都有的内容,网站在展示文字内容时,总是比图片.视频等富媒体内容要难一些,因为富媒体容易被用户接受.尤其是越多的文字内容越难以被用户通篇的阅读,跳跃式阅读往往是阅读的主要方式 ...

  4. Jquery效果之固定不动的块

    好多页面都有用到这种效果,大概就是不论页面上下如何滚动,固定不动的元素不随页面滚动,代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 ...

  5. JavaScript 输入自动完成插件

    作为web开发的一员,应该都不陌生,信息处理时,很多时候需要根据用户的输入实时反馈查询结果供其选择,这给了用户很好的人机交互体验,在各大门户网站上已经被使用的很成熟了,最近项目中用到此功能,网上有很多 ...

  6. js 高级函数 之示例

    js 高级函数作用域安全构造函数 function Person(name, age)    {        this.name = name;        this.age = age;     ...

  7. 从Image Caption Generation理解深度学习

    0. 前面的话 建丁让我写一篇深度学习相关小文章,目标读者是国内的开发者.刚接到这个任务时我是颇为忐忑的,写文章要讲究厚积薄发,如果“水之积也不厚”,“则其负大舟也无力”.因为我自知水平很有限,又不是 ...

  8. 那些年优秀的HTML5活动页面

    一个好的手机活动宣传 更能让人分享 传播是爆炸性的 下面是我平时看到一些好的微信活动宣传页面  分享给大家 其中用到的技术 常做微信活动 专题页面的人 可以看看大神们是怎么做的  这样到自己做的时候 ...

  9. vim配置-程序员【转】

    Ubuntu11.10的vim升级后,版本为vi Improved 7.3.154功能很强大了.不过,程序员要根据自己的习惯配置好vimrc文件,是vim更加得心应手. 注:一般用户在自己的当前目录下 ...

  10. jQuery实现Twitter的自动文字补齐特效

    上图效果可以使用jQuery插件Typeahead.js来实现,这款jQuery插件来自于Twitter的一个新的项目,支持远程和本地的数据集.比较有特色的地方在于你可以将数据集使用本地存储(loca ...