亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

基于C#的音樂播放器主Form實現代碼

2020-01-24 02:33:40
字體:
來源:轉載
供稿:網友

本文所述為一個由C#編寫的音樂播放器的主Form代碼,里面有一些小技巧還是不錯的,現共享給大家參考一下。里面有播放器背景設置、線程定義、調用讀取文件目錄方法、播放時間計數器、設置LV背景、獲取播放歌曲、播放按鈕,切換播放or暫停、切換歌曲到下一首,調用切歌方法、顯示播放列表、歌詞局中、播放窗體最小化隱藏到托盤設置、進度條滾動模塊、從歌曲列表中刪除文件等等功能。且各個功能模板均備有較為詳細的注釋,便于大家閱讀理解。

程序主要代碼如下:

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.IO;using System.Drawing.Imaging;using System.Threading;namespace MyMusicBox{  public partial class MainForm : Form  {    public MainForm()    {      InitializeComponent();      SetStyle(ControlStyles.UserPaint, true);      SetStyle(ControlStyles.OptimizedDoubleBuffer, true);      SetStyle(ControlStyles.AllPaintingInWmPaint, true);      SetStyle(ControlStyles.DoubleBuffer, true);          }    Song mySong = null;//播放的歌曲對象    ListViewItem itemLrc;//打開歌詞路徑項    Bitmap bm ;//用于動態設置LV背景    public SavingInfo sa = null;//持久化信息類    Thread thread;//后臺線程     #region 加載事件    private void MainForm_Load(object sender, EventArgs e)    {        //調用讀取配置文件方法        Path.ReadPath();        //窗體背景設置為配置文件中的圖片        this.BackgroundImage = Image.FromFile(Path.bgPath);        //調用讀取文件目錄方法        Path.ReadSong();        //讀取播放列表        sa = new SavingInfo();        sa.LoadPlayList();        //綁定LV        BindAllLV();        BindPlayLV();        SetLV();        SetLrcBG();        timer1.Enabled = Path.Playing;        //顯示時間        lblTime.Text = System.DateTime.Now.ToString();        //兩個lbl用來根據歌曲總長和播放長度顯示進度,設置位置重疊        lblRuning.Location = lblLong.Location;        //啟動線程        thread = new Thread(Renovate);        thread.IsBackground = true;        thread.Start();          }    #endregion    #region 后臺刷新    /// <summary>    /// 時間計數狀態等刷新    /// </summary>    private void Renovate()    {      //while (true)      //{      //  //計數      //  Count();      //  //獲取當前時間      //  lblTime.Text = System.DateTime.Now.ToString();      //  //無歌曲提示,如果播放列表為空且當前播放列表為顯示狀態      //  if (lvPlay.Items.Count == 0 && lvPlay.Visible)      //    lblTs.Visible = true;      //  else      //    lblTs.Visible = false;      //  Thread.Sleep(1000);      //}    }    #endregion    #region 設置LV背景    /// <summary>    /// 設置LV背景    /// </summary>    public void SetLV()    {      bm = new Bitmap(this.BackgroundImage, this.Width, this.Height);      //繪制矩形,定義起始位置和寬高      Rectangle r = new Rectangle(lvPlay.Location.X, lvPlay.Location.Y, lvPlay.Width, lvSong.Height);      //按矩形尺寸和起始位置截取bm的一部分      bm= bm.Clone(r,bm.PixelFormat);      //把截取到的圖片設置為lv背景,達到與主窗體背景完美契合的效果      lvSong.BeginUpdate();      lvSong.BackgroundImage = (Image)bm;      lvSong.EndUpdate();      lvPlay.BeginUpdate();      lvPlay.BackgroundImage = (Image)bm;      lvPlay.EndUpdate();    }    #endregion        #region 獲取歌曲    /// <summary>    /// 獲取播放歌曲    /// </summary>    private void GetSong()    {      //接收播放歌曲方法,獲得一個歌曲對象      this.mySong = PlayList.Play();      //如果歌曲對象不為空      if (mySong != null)      {        //播放器路徑設置為該歌曲路徑        wmp.URL = mySong.FileName;        //調用方法,顯示歌曲名、歌手        lblName.Text = PlayList.GetName();        lblSinger.Text = PlayList.GetSinger();        mySong.SongState = SongPlayState.played;//修改播放狀態        //播放按鈕圖片修改為暫停圖片        btnPlay.Image = Image.FromFile("Images//stop.png");         try        {                    //讀取歌詞路徑          Path.ReadLrc();          AddLrc();          //啟動一個定時器,此定時器只控制歌詞輪播          timer2.Start();        }        catch (Exception)        {          LrcNull();          itemLrc = new ListViewItem();          itemLrc.SubItems.Add("找不到該歌曲歌詞文件!");          itemLrc.ForeColor = Color.Blue;          itemLrc.Font = new Font("微軟雅黑", 14.25F, ((FontStyle)((FontStyle.Bold | FontStyle.Underline))), GraphicsUnit.Point, ((byte)(134)));          lvLrc.Items.Add(itemLrc);        }      }    }    #endregion    #region 主定時器    //定時器1    private void timer1_Tick(object sender, EventArgs e)    {      if (Path.songPath == "")      {        timer1.Enabled = false;        return;      }            //如果當前無播放歌曲,調用獲取歌曲的方法      if (this.mySong == null)      {        GetSong();      }      //自動下一首,如果當前播放完畢      if (this.wmp.playState == WMPLib.WMPPlayState.wmppsStopped)      {        this.mySong = null; // 將歌曲設為空        Path.lrcPath = "";        Path.dicLrc.Clear();        PlayModel();        PlayList.PlayNext();        Thread.Sleep(1000);      }      // 切歌,當前有播放歌曲且播放狀態為cut      if (this.mySong != null && this.mySong.SongState == SongPlayState.cut)      {        this.wmp.URL = "";//置空        timer2.Stop();        Path.dicLrc.Clear();        Path.lrcPath = "";        this.mySong = null;      }      //如果當前有播放歌曲,需要獲取的一些屬性      if (wmp.URL!="")      {        //設置當前播放歌曲顏色        SongColor();        //獲取音量控件顯示值,根據控制刻度數量計算        this.trackBar1.Value = wmp.settings.volume / 10;        //歌曲時間顯示,一個是總長度,一個是已播放長度,字符串類型        lblAll.Text = wmp.currentMedia.durationString;        lblRun.Text = wmp.Ctlcontrols.currentPositionString;        //進度條,使用了兩個lbl控件,歌曲長度/已播放長度=lbl1的寬/lbl2的寬        //乘1000為防止數據過小出現錯誤        double temp = (wmp.currentMedia.duration*1000) / (wmp.Ctlcontrols.currentPosition*1000);        double width = lblLong.Width;        double avg = width / temp;        //判斷>1為了防止avg數值小于int界限        if(avg>1)          lblRuning.Width = Convert.ToInt32(avg);        picRun.Left = lblRuning.Right;        //托盤顯示播放歌曲        this.notifyIcon1.Text =lblName.Text + lblSinger.Text;      }    }    #endregion    #region 播放按鈕    /// <summary>    /// 播放按鈕,切換播放or暫停    /// </summary>    private void btnPlay_Click(object sender, EventArgs e)    {      if(!timer1.Enabled)        timer1.Start();      //如果當前為正在播放      if (wmp.playState == WMPLib.WMPPlayState.wmppsPlaying)      {        //暫停播放        wmp.Ctlcontrols.pause();        //按鈕圖片修改為播放        btnPlay.Image = Image.FromFile("Images//play.png");        //停止控制歌詞滾動的定時器        if (timer2.Enabled)          timer2.Stop();      }      else if (wmp.playState == WMPLib.WMPPlayState.wmppsPaused)      {        //開始播放        wmp.Ctlcontrols.play();        //按鈕圖片修改為暫停        btnPlay.Image = Image.FromFile("Images//stop.png");        //啟動歌詞滾動        if (!timer2.Enabled&&Path.dicLrc.Count>0)          timer2.Start();      }    }    #endregion    #region 切歌    //切換下一首,調用切歌方法    private void btnRight_Click(object sender, EventArgs e)    {      PlayList.Cut(false);    }    //上一首,調用切歌方法    private void btnLeft_Click(object sender, EventArgs e)    {      PlayList.Cut(true);    }    #endregion    #region 音量    //靜音,靜音!=音量為0    private void btnModel_Click(object sender, EventArgs e)    {      //如果播放器非靜音狀態,前景文字顯示紅叉,狀態改為靜音      if (wmp.settings.mute == false)      {        btnSound.Text = "×";        wmp.settings.mute = true;      }      else//反之,已是靜音狀態,清空紅叉,設置非靜音狀態      {        btnSound.Text = "";        wmp.settings.mute = false;      }    }    //設置音量,此事件為控制刻度值變化時    private void trackBar1_Scroll(object sender, EventArgs e)    {      //音量設置為控制刻度*10(因為初始化的時候是/10)      wmp.settings.volume = this.trackBar1.Value * 10;    }    #endregion    #region 歌曲列表操作    /// <summary>    /// 綁定所有歌曲LV數據    /// </summary>    private void BindAllLV()    {      //如果所有歌曲集合為空,結束      if (PlayList.song == null)        return;      lvSong.Items.Clear();      //遍歷集合綁定到所有歌曲LV      foreach (Song s in PlayList.song)      {        ListViewItem item = new ListViewItem(s.Name);        item.Tag = s;        item.SubItems.Add(s.Singer);        lvSong.Items.Add(item);      }    }    //點擊顯示所有歌曲    private void tslblAll_Click(object sender, EventArgs e)    {      //隱藏播放列表      lvPlay.Visible = false;      //兩個LV位置重疊      lvSong.Location = lvPlay.Location;      //點擊后改變背景色      tslblAll.BackColor = Color.Silver;      tslblPlay.BackColor = Color.Transparent;      //顯示所有歌曲LV      lvSong.Visible = true;    }    //點擊顯示播放列表    private void tslblPlay_Click(object sender, EventArgs e)    {      //調用綁定播放LV數據      BindPlayLV();      //背景色改變      tslblPlay.BackColor = Color.Silver;      tslblAll.BackColor = Color.Transparent;      //隱藏所有歌曲LV      lvSong.Visible = false;      //顯示播放LV      lvPlay.Visible = true;    }    /// <summary>    /// 綁定播放列表    /// </summary>    private void BindPlayLV()    {      //如果播放集合不為空      if (PlayList.play!=null)      {        lvPlay.Items.Clear();        //遍歷集合綁定播放LV        foreach (Song s in PlayList.play)        {          int id = lvPlay.Items.Count + 1;          s.Id = id;          ListViewItem item = new ListViewItem(id.ToString());          item.SubItems.Add(s.Name);          item.Tag = s;          lvPlay.Items.Add(item);        }       }    }    /// <summary>    /// 歌曲計數    /// </summary>    private void Count()    {      //if (lvSong.Visible)      //  lblCount.Text = "已選" + lvSong.CheckedItems.Count + "http://總" + lvSong.Items.Count;      //if (lvPlay.Visible)      //  lblCount.Text = "總" + lvPlay.Items.Count;    }    #endregion    #region 歌詞操作    /// <summary>    /// 設置歌詞背景    /// </summary>    public void SetLrcBG()    {      bm = new Bitmap(this.BackgroundImage, this.Width, this.Height);      //繪制矩形,定義起始位置和寬高      Rectangle r = new Rectangle(lvLrc.Location.X, lvLrc.Location.Y, lvLrc.Width, lvLrc.Height);      //按矩形尺寸和起始位置截取bm的一部分      bm = bm.Clone(r, PixelFormat.Undefined);      //把截取到的圖片設置為lv背景,達到與主窗體背景完美契合的效果      lvLrc.BeginUpdate();      lvLrc.BackgroundImage = (Image)bm;      lvLrc.EndUpdate();    }    int nullCount;//記錄空行位置    /// <summary>    /// 設置空行,使歌詞局中    /// </summary>    private void LrcNull()    {      lvLrc.Items.Clear();      nullCount = (int)Math.Ceiling(Convert.ToDouble(lvLrc.Height / 30 / 2));      for (int i = 0; i <= nullCount; i++)      {        lvLrc.Items.Add("");      }    }    /// <summary>    /// 添加歌詞    /// </summary>    private void AddLrc()    {      LrcNull();      foreach (string key in Path.dicLrc.Keys)      {        ListViewItem item = new ListViewItem();        item.SubItems.Add(Path.dicLrc[key]);        item.Tag = key;        lvLrc.Items.Add(item);      }    }    //只控制歌詞輪播    private void timer2_Tick(object sender, EventArgs e)    {      //調用顯示歌詞的方法      ShowLrc();    }    /// <summary>    /// 顯示歌詞    /// </summary>    private void ShowLrc()    {      foreach (ListViewItem item in lvLrc.Items)      {        if (item.Tag == null)          continue;        if (item.Tag.ToString() == lblRun.Text )        {          item.ForeColor = Color.DarkOrange;          item.Font = new Font("華文琥珀", 16F, FontStyle.Regular, GraphicsUnit.Point, ((byte)(134)));          lvLrc.Items[item.Index -1].ForeColor = Color.Silver;          lvLrc.Items[item.Index - 1].Font = new Font("微軟雅黑", 12F, FontStyle.Regular, GraphicsUnit.Point, ((byte)(134)));          if (item.Index + 1<lvLrc.Items.Count)            lvLrc.Items[item.Index+1].EnsureVisible();               }      }    }    #endregion    #region 窗體隱藏到托盤設置    //最小化到托盤    private void btnMix_Click(object sender, EventArgs e)    {      this.Hide();    }    //主窗體大小狀態變化時    private void MainForm_SizeChanged(object sender, EventArgs e)    {      if (this.WindowState == FormWindowState.Minimized)      {        //啟動一個控件,該控制可以讓程序在右下角顯示圖標,需要提前設置該控制顯示的圖標圖片        this.notifyIcon1.Visible = true;      }    }    //托盤顯示,雙擊顯示窗體    private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)    {      ShowMain();    }    /// <summary>    /// 顯示主窗體    /// </summary>    public void ShowMain()    {      if (!this.Visible)      {        this.TopMost = true;        this.Show();        this.TopMost = false;      }      else      {        this.TopMost = true;        this.TopMost = false;      }    }    //托盤打開窗體    private void tsmiShow_Click(object sender, EventArgs e)    {      ShowMain();    }    //托盤退出    private void tsmiExit_Click(object sender, EventArgs e)    {      Application.Exit();    }    #endregion    #region 窗體位移    Point mouseOff;//鼠標移動位置變量    bool leftFlag;//標記是否為左鍵    private void pnlMain_MouseDown(object sender, MouseEventArgs e)    {      if (e.Button == MouseButtons.Left)      {        mouseOff = new Point(-e.X, -e.Y); //得到變量的值        leftFlag = true; //點擊左鍵按下時標注為true;      }    }    private void pnlMain_MouseMove(object sender, MouseEventArgs e)    {      if (leftFlag)      {        Point mouseSet = Control.MousePosition;        mouseSet.Offset(mouseOff.X, mouseOff.Y); //設置移動后的位置        Location = mouseSet;      }    }    private void pnlMain_MouseUp(object sender, MouseEventArgs e)    {      if (leftFlag)      {        leftFlag = false;//釋放鼠標后標注為false;      }    }  #endregion    #region 進度條滾動塊移動    int runX;//記錄滾動塊初始位置    private void picRun_MouseDown(object sender, MouseEventArgs e)    {      runX = e.X;    }    //釋放鼠標位移,進度前進    private void picRun_MouseUp(object sender, MouseEventArgs e)    {      picRun.Left += e.X - runX - picRun.Width / 2;      if (picRun.Left > lblLong.Right)        picRun.Left = lblLong.Right;      if(picRun.Left<lblLong.Left)        picRun.Left = lblLong.Left;      if (mySong != null)      {        lblRuning.Width = picRun.Right- lblRuning.Left;        double temp = (lblLong.Width*1000.0 )/ (lblRuning.Width*1000.0);        wmp.Ctlcontrols.currentPosition = wmp.currentMedia.duration / temp;      }    }    #endregion    #region 歌曲增刪操作    //添加歌曲到播放列表    private void tsmiAdd_Click(object sender, EventArgs e)    {      if (lvSong.CheckedItems.Count > 0)      {        foreach (ListViewItem item in lvSong.CheckedItems)        {           // 遍歷播放集合,如果存在不添加           foreach (Song s in PlayList.play)           {             if (s.Name == item.Text)             {               PlayList.play.Remove(s);               break;             }           }           PlayList.play.Add(item.Tag as Song);        }      }    }    //所有歌曲:刪除選中歌曲    private void tsmiDel_Click(object sender, EventArgs e)    {      foreach (ListViewItem item in lvSong.Items)      {        if (item.Checked)        {          PlayList.song.Remove(item.Tag as Song);        }       }      BindAllLV();    }    //全選歌曲    private void tsmiCheck_Click(object sender, EventArgs e)    {      foreach (ListViewItem item in lvSong.Items)      {        if (tsmiCheck.Text == "全部選中")        {          item.Checked = true;          if(item.Index+1==lvSong.Items.Count)            tsmiCheck.Text = "取消選中";        }        else        {          item.Checked = false;          if (item.Index + 1 == lvSong.Items.Count)            tsmiCheck.Text = "全部選中";        }      }    }    //選中項的同時選中復選框    private void lvSong_MouseDown(object sender, MouseEventArgs e)    {      if (lvSong.SelectedItems.Count > 0 && e.Button == MouseButtons.Left)      {        lvSong.SelectedItems[0].Checked = true;      }    }    //播放列表刪除事件    private void tsmiPlayDel_Click(object sender, EventArgs e)    {      foreach (ListViewItem item in lvPlay.Items)      {        if (item.Selected)        {          //PlayList.id = (lvPlay.Items[item.Index+1].Tag as Song).Id;          //this.song = null;          PlayList.play.Remove(item.Tag as Song);        }      }      BindPlayLV();    }    //清空播放列表    private void tsmiPlayClear_Click(object sender, EventArgs e)    {      PlayList.play.Clear();      this.mySong = null;      BindPlayLV();    }    //從播放列表刪除文件    private void tsmiPlayDelFile_Click(object sender, EventArgs e)    {      if (lvPlay.SelectedItems.Count > 0)      {        DelFile(lvPlay.SelectedItems[0]);      }    }    /// <summary>    /// 刪除某項對應文件    /// </summary>    /// <param name="item"></param>    private void DelFile(ListViewItem item)    {      try      {        string path = (item.Tag as Song).FileName;        File.Delete(path);        BindAllLV();        BindPlayLV();      }      catch (Exception)      {        MessageBox.Show("該文件為只讀文件或用戶權限不夠,無法刪除!");      }    }    //從所有歌曲中刪除文件    private void tsmiDelFile_Click(object sender, EventArgs e)    {      if (lvSong.SelectedItems.Count > 0)      {        DelFile(lvSong.SelectedItems[0]);      }    }    //雙擊列表項播放歌曲    private void lvPlay_DoubleClick(object sender, EventArgs e)    {      if (!timer1.Enabled)      {        PlayList.id = (lvPlay.SelectedItems[0].Tag as Song).Id;        timer1.Start();      }      if (lvPlay.SelectedItems.Count > 0)      {        PlayList.id = (lvPlay.SelectedItems[0].Tag as Song).Id;        this.mySong = null;      }    }    #endregion    #region 設置    //跳轉設置窗體    private void btnSet_Click(object sender, EventArgs e)    {      SetForm set = new SetForm();      set.parent = this;//把主窗體傳過去      set.Show(this);    }    #endregion    #region 回滾    /// <summary>    /// 路徑重置后    /// </summary>    public void Back()    {      BindAllLV();      PlayList.Update();      timer1.Start();    }    #endregion    #region 退出    //關閉時保存列表    private void MainForm_FormClosing(object sender, FormClosingEventArgs e)    {      if (Path.SaveList)        sa.SavePlayList();    }    //面板退出    private void btnExit_Click(object sender, EventArgs e)    {      if (Path.Exit)      {        Application.Exit();      }      else      {        this.Hide();      }    }     #endregion    #region 背景顏色等變換控制    private void btnLeft_MouseEnter(object sender, EventArgs e)    {      ((Button)sender).BackgroundImage = Image.FromFile("Images//allbtn_highlight.png");    }    private void btnLeft_MouseLeave(object sender, EventArgs e)    {      ((Button)sender).BackgroundImage = null;    }    private void tslblPlay_MouseEnter(object sender, EventArgs e)    {      ((ToolStripLabel)sender).BackgroundImage = Image.FromFile("Images//Album_bkg_wubian.png");    }    private void tslblPlay_MouseLeave(object sender, EventArgs e)    {      ((ToolStripLabel)sender).BackgroundImage = null;    }    //選中改變顏色    private void lvSong_ItemChecked(object sender, ItemCheckedEventArgs e)    {      foreach (ListViewItem item in lvSong.Items)      {        if (item.Checked)        {          item.ForeColor = Color.DarkOrange;        }        else        {          item.ForeColor = Color.DimGray;        }      }    }    /// <summary>    /// 當前播放歌曲改變顏色    /// </summary>    private void SongColor()    {      foreach (ListViewItem item in lvPlay.Items)      {        if (item.SubItems[1].Text == lblName.Text)        {          item.ForeColor = Color.DeepSkyBlue;        }        else        {          item.ForeColor = Color.White;        }      }    }    #endregion    #region 選擇歌詞    private void lvLrc_MouseDown(object sender, MouseEventArgs e)    {      if (lvLrc.SelectedItems.Count>0&&lvLrc.SelectedItems[0] == itemLrc)      {        if (Path.OpenLrc())        {          AddLrc();          //啟動一個定時器,此定時器只控制歌詞輪播          timer2.Start();        }      }    }    #endregion    #region 窗體最大化設置    Size now;//原始尺寸    Point pN;//原始位置    //最大化    private void btnMax_Click(object sender, EventArgs e)    {      Size max = new Size(Screen.PrimaryScreen.WorkingArea.Width - 10, Screen.PrimaryScreen.WorkingArea.Height - 20);      if (this.Size != max)      {        pN = this.Location;        now= this.Size;        this.Size = max;        this.Left = 5;        this.Top = 5;        btnMax.Image = Image.FromFile("Images//max1.png");      }      else      {        this.Location = pN;        this.Size = now;        btnMax.Image = Image.FromFile("Images//max.png");      }      SetLV();      SetLrcBG();    }    #endregion    #region 歌詞、MV切換    private void tsmiLrc_Click(object sender, EventArgs e)    {      lvLrc.Visible = true;      wmp.Visible = false;      tsmiLrc.BackColor = Color.LawnGreen;      tsmiMv.BackColor = Color.Transparent;    }    private void tsmiMv_Click(object sender, EventArgs e)    {      wmp.Location = lvLrc.Location;      wmp.Size = lvLrc.Size;      lvLrc.Visible = false;      wmp.Visible = true;      tsmiLrc.BackColor = Color.Transparent;      tsmiMv.BackColor = Color.LawnGreen;    }    #endregion    #region 播放模式切換    /// <summary>    /// 播放模式    /// </summary>    private void PlayModel()    {      if (tsmiOne.Checked)      {        PlayList.PlayOne();      }      else if (tsmiSJ.Checked)      {        PlayList.PlayRandom();      }    }    private void tsmiXH_Click(object sender, EventArgs e)    {      ToolStripMenuItem ts=((ToolStripMenuItem)sender);      foreach(ToolStripMenuItem item in tsmiModel.DropDownItems)      {        if (ts.Checked && ts == item)        {          continue;        }        else        {          item.Checked = false;        }      }    }    #endregion      }}

希望本文所述示例對大家的C#程序開發能夠起到一定的借鑒價值。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91亚洲午夜在线| 国产亚洲精品久久久久久牛牛| 久久久久久高潮国产精品视| 久久精品视频播放| 国产亚洲人成网站在线观看| 成人福利在线视频| 成人久久一区二区三区| 91亚洲va在线va天堂va国| 日韩av不卡在线| 日av在线播放中文不卡| 亚洲在线一区二区| 成人性生交大片免费看视频直播| 中文字幕综合一区| 国产成人一区二区三区小说| 成人写真视频福利网| 97香蕉超级碰碰久久免费的优势| 91午夜在线播放| 另类天堂视频在线观看| 中文字幕精品在线| 精品综合久久久久久97| 91av在线视频观看| 久热爱精品视频线路一| 欧美亚洲在线观看| 国产欧美日韩专区发布| 亚洲一区中文字幕在线观看| 欧美黄网免费在线观看| 日韩三级成人av网| 一区国产精品视频| 日本免费久久高清视频| 欧亚精品中文字幕| 九九热视频这里只有精品| 亚洲欧美变态国产另类| 亚洲新声在线观看| 国产精品www网站| 亚洲伊人一本大道中文字幕| 精品久久香蕉国产线看观看亚洲| 亚洲国产另类 国产精品国产免费| 亚洲激情电影中文字幕| 久久人91精品久久久久久不卡| 国产97免费视| 亚洲国产精品久久久久秋霞不卡| 国产日韩精品电影| 日韩免费在线电影| 久久久伊人欧美| 日本伊人精品一区二区三区介绍| 日韩国产激情在线| 日韩大片在线观看视频| 欧美老肥婆性猛交视频| 懂色av中文一区二区三区天美| 疯狂做受xxxx高潮欧美日本| 久久久亚洲福利精品午夜| 亚洲91精品在线观看| 亚洲色图25p| 亚洲综合国产精品| 国产精品国产三级国产aⅴ9色| 在线播放国产精品| 欧美成人中文字幕在线| 日韩大陆毛片av| 5566成人精品视频免费| 欧美日韩激情网| 92国产精品久久久久首页| 久久精品夜夜夜夜夜久久| 国产精品高精视频免费| 欧美激情亚洲综合一区| 亚洲成人三级在线| 国产精品69久久| 欧美日韩亚洲成人| 欧美猛交ⅹxxx乱大交视频| 在线观看视频99| 国产高清视频一区三区| 两个人的视频www国产精品| 亚洲天堂av在线免费观看| 欧美另类第一页| 国产一区二中文字幕在线看| 久久免费在线观看| 日韩女优在线播放| 色噜噜国产精品视频一区二区| 日韩av综合网站| 国产精品手机播放| 亚洲激情自拍图| 久久精品亚洲94久久精品| 精品欧美国产一区二区三区| 欧美乱妇高清无乱码| 久久精品这里热有精品| 精品偷拍各种wc美女嘘嘘| 国产成人鲁鲁免费视频a| 国产一区二区三区18| 日韩电影视频免费| 亚洲国产精品热久久| 亚洲精品白浆高清久久久久久| 精品成人国产在线观看男人呻吟| 日韩中文字幕亚洲| 欧美区在线播放| 精品久久中文字幕久久av| 久久久国产影院| 欧洲亚洲女同hd| 日韩精品中文字幕久久臀| 欧美多人爱爱视频网站| 亚洲激情中文字幕| 日韩av综合网站| 欧美激情国产日韩精品一区18| xxav国产精品美女主播| 国产精品久久精品| 欧美性xxxxx极品| 一区二区在线视频| 欧美电影免费观看高清完整| 成人av番号网| 国产欧美久久久久久| 久久999免费视频| 日韩欧亚中文在线| 欧美精品日韩www.p站| 日韩中文理论片| 日韩在线激情视频| 91亚洲国产精品| 在线成人激情视频| 亚洲国产精品女人久久久| 尤物tv国产一区| 欧美成人免费va影院高清| 中文字幕av一区二区| 成人中文字幕+乱码+中文字幕| 国产精品人人做人人爽| 精品香蕉在线观看视频一| 黄色一区二区在线| 午夜精品久久久久久99热| 一区二区三区在线播放欧美| 在线观看国产精品淫| 91黑丝高跟在线| 欧美亚州一区二区三区| 久久成人精品一区二区三区| 国产精品一区二区3区| www.色综合| 亚洲剧情一区二区| 欧美尺度大的性做爰视频| 亚洲女在线观看| 国产午夜精品一区理论片飘花| 亚洲国产欧美一区二区三区久久| 日本电影亚洲天堂| 亚洲激情视频网站| 亚洲国产日韩欧美在线动漫| 亚洲欧美一区二区精品久久久| 欧美性xxxxxx| 欧美日韩国产成人高清视频| 久久99热这里只有精品国产| 黑人巨大精品欧美一区二区| 8050国产精品久久久久久| 亚洲人成伊人成综合网久久久| 欧美精品在线网站| 亚洲一区二区三区毛片| 久久久久久国产精品| 欧美日韩中文字幕综合视频| 国产亚洲欧美另类中文| 色青青草原桃花久久综合| 亚洲人成毛片在线播放| 日韩毛片在线看| 久久噜噜噜精品国产亚洲综合| 久久成人免费视频| 精品久久久久久久久久久久久| 亚洲一级免费视频| 一本大道久久加勒比香蕉| 午夜剧场成人观在线视频免费观看| 亚洲欧美日韩国产中文专区| 国产精品影院在线观看| 亚洲精品av在线| 92福利视频午夜1000合集在线观看|