青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

wxWidget實現連續繪圖并能夠控制繪圖的開始與結束

在用CCD相機拍照的圖像進行實時成像的時候遇到這么一個問題:

   1: RunCamera();
   2: while (1) {
   3:     GetImg();
   4:     ShowImg();
   5: }
   6: CloseCamera();

想要對獲取的圖像進行實時成像,最先想到的是采用while(1)的方式,但是這樣的方式會帶來一些問題,除了終止程序,沒有辦法使得循環停下,這個結果不是我們想要的。如果加上一個i < 100類似的條件,數量太大需要等,數量太小很快就結束了。我們想要設計的是能夠隨叫隨停的,能夠控制成像與停止的功能。

第一個想到的是onTimer的方式進行實現,不過水平低低,還是先在網上搜索一翻吧,功夫不負有心人,還是找到了。Making a render loop

它采用了兩種方式,一種為事件處理方式,一種為剛想到的onTimer的方式。下面參考上述鏈接中的內容,同時考慮自己的功能需求,給出了自己實現的具體代碼。

所有的代碼都是在codeblock下實現的。

1. 事件處理方式

采用onIdel的方式,一種頻率最快的方式之一;但是頻率不是固定的,當你進行其它操作時,如打開菜單Idel將會停止處理。

   1: // the most improtant code in frame.h and frame.cpp
   2: /***************************************************************
   3:  * Name:      tmp1Main.h
   4:  * Purpose:   Defines Application Frame
   5:  * Author:    grass in moon 
   6:  * Created:   2012-07-06
   7:  * Copyright: grass in moon (http://www.shnenglu.com/grass-and-moon/)
   8:  * License:
   9:  **************************************************************/
  10:  
  11: #ifndef TMP1MAIN_H
  12: #define TMP1MAIN_H
  13:  
  14: #ifndef WX_PRECOMP
  15: #include <wx/wx.h>
  16: #endif
  17:  
  18: #include "tmp1App.h"
  19:  
  20: class tmp1Frame: public wxFrame
  21: {
  22: public:
  23:     tmp1Frame(wxFrame *frame, const wxString& title);
  24:     ~tmp1Frame();
  25:  
  26:     // for painting
  27:     void PaintNow();
  28:     void render(wxDC& dc);
  29:  
  30: private:
  31:     enum
  32:     {
  33:         idMenuQuit = 1000,
  34:         idMenuAbout,
  35:         idStartLoop,
  36:         idStopLoop
  37:     };
  38:  
  39:     // mark loop on or off
  40:     bool render_loop_on;
  41:  
  42:     void OnClose(wxCloseEvent& event);
  43:     void OnQuit(wxCommandEvent& event);
  44:     void OnAbout(wxCommandEvent& event);
  45:     void OnStartLoop(wxCommandEvent& event);
  46:     void OnStopLoop(wxCommandEvent& event);
  47:  
  48:     // deel with wxIdleEvent
  49:     void OnIdle(wxIdleEvent& event);
  50:  
  51:     DECLARE_EVENT_TABLE()
  52: };
  53:  
  54:  
  55: #endif // TMP1MAIN_H
  56:  
  57: /***************************************************************
  58:  * Name:      tmp1Main.cpp
  59:  * Purpose:   Code for Application Frame
  60:  * Author:    grass in moon
  61:  * Created:   2012-07-06
  62:  * Copyright: grass in moon (http://www.shnenglu.com/grass-and-moon/)
  63:  * License:
  64:  **************************************************************/
  65:  
  66: #ifdef WX_PRECOMP
  67: #include "wx_pch.h"
  68: #endif
  69:  
  70: #ifdef __BORLANDC__
  71: #pragma hdrstop
  72: #endif //__BORLANDC__
  73:  
  74: #include "tmp1Main.h"
  75:  
  76: //helper functions
  77: enum wxbuildinfoformat
  78: {
  79:     short_f, long_f
  80: };
  81:  
  82: wxString wxbuildinfo(wxbuildinfoformat format)
  83: {
  84:     wxString wxbuild(wxVERSION_STRING);
  85:  
  86:     if (format == long_f )
  87:     {
  88: #if defined(__WXMSW__)
  89:         wxbuild << _T("-Windows");
  90: #elif defined(__WXMAC__)
  91:         wxbuild << _T("-Mac");
  92: #elif defined(__UNIX__)
  93:         wxbuild << _T("-Linux");
  94: #endif
  95:  
  96: #if wxUSE_UNICODE
  97:         wxbuild << _T("-Unicode build");
  98: #else
  99:         wxbuild << _T("-ANSI build");
 100: #endif // wxUSE_UNICODE
 101:     }
 102:  
 103:     return wxbuild;
 104: }
 105:  
 106: BEGIN_EVENT_TABLE(tmp1Frame, wxFrame)
 107:     EVT_CLOSE(tmp1Frame::OnClose)
 108:     EVT_MENU(idMenuQuit, tmp1Frame::OnQuit)
 109:     EVT_MENU(idMenuAbout, tmp1Frame::OnAbout)
 110:     EVT_MENU(idStartLoop, tmp1Frame::OnStartLoop)
 111:     EVT_MENU(idStopLoop, tmp1Frame::OnStopLoop)
 112:     EVT_IDLE(tmp1Frame::OnIdle)
 113: END_EVENT_TABLE()
 114:  
 115: tmp1Frame::tmp1Frame(wxFrame *frame, const wxString& title)
 116:     : wxFrame(frame, -1, title)
 117: {
 118: #if wxUSE_MENUS
 119:     // create a menu bar
 120:     wxMenuBar* mbar = new wxMenuBar();
 121:     wxMenu* fileMenu = new wxMenu(_T(""));
 122:     fileMenu->Append(idMenuQuit, _("&Quit\tAlt-F4"), _("Quit the application"));
 123:     fileMenu->Append(idStartLoop, _("St&artLoop"));       // for starting draw text
 124:     fileMenu->Append(idStopLoop, _("Sto&pLoop"));         // for stoping draw text
 125:     mbar->Append(fileMenu, _("&File"));
 126:  
 127:     wxMenu* helpMenu = new wxMenu(_T(""));
 128:     helpMenu->Append(idMenuAbout, _("&About\tF1"), _("Show info about this application"));
 129:     mbar->Append(helpMenu, _("&Help"));
 130:  
 131:     SetMenuBar(mbar);
 132: #endif // wxUSE_MENUS
 133:  
 134: #if wxUSE_STATUSBAR
 135:     // create a status bar with some information about the used wxWidgets version
 136:     CreateStatusBar(2);
 137:     SetStatusText(_("Hello Code::Blocks user!"),0);
 138:     SetStatusText(wxbuildinfo(short_f), 1);
 139: #endif // wxUSE_STATUSBAR
 140:  
 141:     render_loop_on = false;
 142: }
 143:  
 144:  
 145: tmp1Frame::~tmp1Frame()
 146: {
 147: }
 148:  
 149: void tmp1Frame::OnClose(wxCloseEvent &event)
 150: {
 151:     Destroy();
 152: }
 153:  
 154: void tmp1Frame::OnQuit(wxCommandEvent &event)
 155: {
 156:     Destroy();
 157: }
 158:  
 159: void tmp1Frame::OnAbout(wxCommandEvent &event)
 160: {
 161:     wxString msg = wxbuildinfo(long_f);
 162:     wxMessageBox(msg, _("Welcome to..."));
 163: }
 164:  
 165: // set render_loop_on true, make OnIdle can draw text
 166: void tmp1Frame::OnStartLoop(wxCommandEvent& event)
 167: {
 168:     render_loop_on = true;
 169: }
 170:  
 171: // set render_loop_on true, make OnIdle can skip draw text
 172: void tmp1Frame::OnStopLoop(wxCommandEvent& event)
 173: {
 174:     render_loop_on = false;
 175: }
 176:  
 177: // paint depend on render_loop_on is true or off
 178: void tmp1Frame::OnIdle(wxIdleEvent& event)
 179: {
 180:     if (render_loop_on)
 181:     {
 182:         PaintNow();
 183:         event.RequestMore();
 184:     }
 185: }
 186:  
 187: void tmp1Frame::PaintNow()
 188: {
 189:     wxClientDC dc(this);
 190:     render(dc);
 191: }
 192:  
 193: // draw text on screen
 194: void tmp1Frame::render(wxDC& dc)
 195: {
 196:     static int y = 0;
 197:     static int y_speed = 2;
 198:  
 199:     y += y_speed;
 200:     if (y < 0) y_speed = 2;
 201:     if (y > 200) y_speed = -2;
 202:  
 203:     dc.SetBackground(*wxWHITE_BRUSH);
 204:     dc.Clear();
 205:     dc.DrawText(wxT("Testing"),40,y);
 206: }
 207:  

2. 時間處理方式

采用onTimer,具有較為固定的處理頻率,當處理其他操作如打開菜單式,并不會中止;速度不像事件處理方式那么快,實現的速率與操作系統相關。

目前知道的wxTimer實現的方式有兩種,1. 采用EVT_TIMER事件處理方式(該處理方法已經在文簡易定時器設計中實現) 2. 創建一個wxTimer的子類,然后對wxTimer中的Notify函數進行重載。

下面采用第二種方式,進行實現。

tmp1Main.h

   1: /***************************************************************
   2:  * Name:      tmp1Main.h
   3:  * Purpose:   Defines Application Frame
   4:  * Author:    grass in moon 
   5:  * Created:   2012-07-06
   6:  * Copyright: grass in moon (http://www.shnenglu.com/grass-and-moon/)
   7:  * License:
   8:  **************************************************************/
   9:  
  10: #ifndef TMP1MAIN_H
  11: #define TMP1MAIN_H
  12:  
  13: #ifndef WX_PRECOMP
  14: #include <wx/wx.h>
  15: #endif
  16:  
  17: #include "tmp1App.h"
  18:  
  19: class RenderTimer;         // make renderTimer.h not influence this file compling time
  20:  
  21: class tmp1Frame: public wxFrame
  22: {
  23: public:
  24:     tmp1Frame(wxFrame *frame, const wxString& title);
  25:     ~tmp1Frame();
  26:  
  27:     // for painting
  28:     void PaintNow();
  29:     void render(wxDC& dc);
  30:  
  31: private:
  32:     // derived from wxTimer
  33:     RenderTimer* timer;
  34:  
  35:     enum
  36:     {
  37:         idMenuQuit = 1000,
  38:         idMenuAbout,
  39:         idStartLoop,
  40:         idStopLoop
  41:     };
  42:  
  43:     void OnClose(wxCloseEvent& event);
  44:     void OnQuit(wxCommandEvent& event);
  45:     void OnAbout(wxCommandEvent& event);
  46:     void OnStartLoop(wxCommandEvent& event);
  47:     void OnStopLoop(wxCommandEvent& event);
  48:  
  49:     DECLARE_EVENT_TABLE()
  50: };
  51:  
  52: #endif // TMP1MAIN_H

tmp1Main.cpp

   1: /***************************************************************
   2:  * Name:      tmp1Main.cpp
   3:  * Purpose:   Code for Application Frame
   4:  * Author:    grass in moon 
   5:  * Created:   2012-07-06
   6:  * Copyright: grass in moon (http://www.shnenglu.com/grass-and-moon/)
   7:  * License:
   8:  **************************************************************/
   9:  
  10: #ifdef WX_PRECOMP
  11: #include "wx_pch.h"
  12: #endif
  13:  
  14: #ifdef __BORLANDC__
  15: #pragma hdrstop
  16: #endif //__BORLANDC__
  17:  
  18: #include "tmp1Main.h"
  19: #include "renderTimer.h"
  20:  
  21: //helper functions
  22: enum wxbuildinfoformat
  23: {
  24:     short_f, long_f
  25: };
  26:  
  27: wxString wxbuildinfo(wxbuildinfoformat format)
  28: {
  29:     wxString wxbuild(wxVERSION_STRING);
  30:  
  31:     if (format == long_f )
  32:     {
  33: #if defined(__WXMSW__)
  34:         wxbuild << _T("-Windows");
  35: #elif defined(__WXMAC__)
  36:         wxbuild << _T("-Mac");
  37: #elif defined(__UNIX__)
  38:         wxbuild << _T("-Linux");
  39: #endif
  40:  
  41: #if wxUSE_UNICODE
  42:         wxbuild << _T("-Unicode build");
  43: #else
  44:         wxbuild << _T("-ANSI build");
  45: #endif // wxUSE_UNICODE
  46:     }
  47:  
  48:     return wxbuild;
  49: }
  50:  
  51: BEGIN_EVENT_TABLE(tmp1Frame, wxFrame)
  52:     EVT_CLOSE(tmp1Frame::OnClose)
  53:     EVT_MENU(idMenuQuit, tmp1Frame::OnQuit)
  54:     EVT_MENU(idMenuAbout, tmp1Frame::OnAbout)
  55:     EVT_MENU(idStartLoop, tmp1Frame::OnStartLoop)
  56:     EVT_MENU(idStopLoop, tmp1Frame::OnStopLoop)
  57: END_EVENT_TABLE()
  58:  
  59: tmp1Frame::tmp1Frame(wxFrame *frame, const wxString& title)
  60:     : wxFrame(frame, -1, title)
  61: {
  62: #if wxUSE_MENUS
  63:     // create a menu bar
  64:     wxMenuBar* mbar = new wxMenuBar();
  65:     wxMenu* fileMenu = new wxMenu(_T(""));
  66:     fileMenu->Append(idMenuQuit, _("&Quit\tAlt-F4"), _("Quit the application"));
  67:     fileMenu->Append(idStartLoop, _("St&artLoop"));       // for starting draw text
  68:     fileMenu->Append(idStopLoop, _("Sto&pLoop"));         // for stoping draw text
  69:     mbar->Append(fileMenu, _("&File"));
  70:  
  71:     wxMenu* helpMenu = new wxMenu(_T(""));
  72:     helpMenu->Append(idMenuAbout, _("&About\tF1"), _("Show info about this application"));
  73:     mbar->Append(helpMenu, _("&Help"));
  74:  
  75:     SetMenuBar(mbar);
  76: #endif // wxUSE_MENUS
  77:  
  78: #if wxUSE_STATUSBAR
  79:     // create a status bar with some information about the used wxWidgets version
  80:     CreateStatusBar(2);
  81:     SetStatusText(_("Hello Code::Blocks user!"),0);
  82:     SetStatusText(wxbuildinfo(short_f), 1);
  83: #endif // wxUSE_STATUSBAR
  84:  
  85:     timer = new RenderTimer(this);
  86: }
  87:  
  88:  
  89: tmp1Frame::~tmp1Frame()
  90: {
  91:     delete timer;
  92: }
  93:  
  94: void tmp1Frame::OnClose(wxCloseEvent &event)
  95: {
  96:     Destroy();
  97: }
  98:  
  99: void tmp1Frame::OnQuit(wxCommandEvent &event)
 100: {
 101:     Destroy();
 102: }
 103:  
 104: void tmp1Frame::OnAbout(wxCommandEvent &event)
 105: {
 106:     wxString msg = wxbuildinfo(long_f);
 107:     wxMessageBox(msg, _("Welcome to..."));
 108: }
 109:  
 110: // set render_loop_on true, make OnIdle can draw text
 111: void tmp1Frame::OnStartLoop(wxCommandEvent& event)
 112: {
 113:     timer->StartLoop();
 114: }
 115:  
 116: // set render_loop_on true, make OnIdle can skip draw text
 117: void tmp1Frame::OnStopLoop(wxCommandEvent& event)
 118: {
 119:     timer->StopLoop();
 120: }
 121:  
 122: void tmp1Frame::PaintNow()
 123: {
 124:     wxClientDC dc(this);
 125:     render(dc);
 126: }
 127:  
 128: // draw text on screen
 129: void tmp1Frame::render(wxDC& dc)
 130: {
 131:     static int y = 0;
 132:     static int y_speed = 2;
 133:  
 134:     y += y_speed;
 135:     if (y < 0) y_speed = 2;
 136:     if (y > 200) y_speed = -2;
 137:  
 138:     dc.SetBackground(*wxWHITE_BRUSH);
 139:     dc.Clear();
 140:     dc.DrawText(wxT("Testing"),40,y);
 141: }

renderTimer.h

   1: /***************************************************************
   2:  * Name:      renderTimer.h
   3:  * Purpose:   used for onTimer
   4:  * Author:    grass in moon 
   5:  * Created:   2012-07-06
   6:  * Copyright: grass in moon (http://www.shnenglu.com/grass-and-moon/)
   7:  * License:
   8:  **************************************************************/
   9:  
  10: #ifndef RENDERTIMER_H_INCLUDED
  11: #define RENDERTIMER_H_INCLUDED
  12:  
  13: class tmp1Frame;
  14:  
  15: class RenderTimer : public wxTimer
  16: {
  17:     tmp1Frame* tmpFrame;
  18: public:
  19:     RenderTimer(tmp1Frame* tmpFrame);
  20:     void Notify();
  21:     void StartLoop();
  22:     void StopLoop();
  23: };
  24:  
  25: #endif // RENDERTIMER_H_INCLUDED

renderTimer.cpp

   1: /***************************************************************
   2:  * Name:      renderTimer.cpp
   3:  * Purpose:   used for onTimer
   4:  * Author:    grass in moon 
   5:  * Created:   2012-07-06
   6:  * Copyright: grass in moon (http://www.shnenglu.com/grass-and-moon/)
   7:  * License:
   8:  **************************************************************/
   9: #include "tmp1Main.h"
  10: #include "renderTimer.h"
  11:  
  12: RenderTimer::RenderTimer(tmp1Frame* tmpFrame)
  13: {
  14:     this->tmpFrame = tmpFrame;
  15: }
  16:  
  17: // perform the draw text action
  18: void RenderTimer::Notify()
  19: {
  20:     tmpFrame->PaintNow();
  21: }
  22:  
  23: // set the interval time is 10 ms
  24: void RenderTimer::StartLoop()
  25: {
  26:     wxTimer::Start(10);
  27: }
  28:  
  29: void RenderTimer::StopLoop()
  30: {
  31:     wxTimer::Stop();
  32: }

posted on 2012-07-06 11:17 鐘謝偉 閱讀(1537) 評論(0)  編輯 收藏 引用

<2012年6月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

導航

統計

常用鏈接

留言簿(1)

隨筆檔案

IT網站

My Friends

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            免费成人性网站| 国产精品永久| 91久久精品一区二区别| 久久综合伊人77777尤物| 欧美在线视频导航| 精品电影在线观看| 美女爽到呻吟久久久久| 美女精品自拍一二三四| 亚洲欧洲日韩女同| 99re6热只有精品免费观看| 国产精品国产福利国产秒拍| 欧美一级二区| 久久久一二三| 亚洲少妇在线| 久久国产精品99精品国产| 亚洲精品国产精品国自产观看浪潮| 亚洲激情在线观看视频免费| 欧美激情中文字幕乱码免费| 亚洲欧美国产精品桃花| 久久av一区二区| aa日韩免费精品视频一| 午夜一区二区三区不卡视频| 亚洲欧洲综合另类| 亚洲欧美日本视频在线观看| 亚洲国产欧美一区| 一区二区三区成人精品| 激情校园亚洲| 亚洲系列中文字幕| 亚洲国产精彩中文乱码av在线播放| 99re6这里只有精品| 国内精品久久久久国产盗摄免费观看完整版 | 一区二区三区精品视频| 狠狠综合久久av一区二区小说| 欧美大片国产精品| 国产乱码精品一区二区三区av| 亚洲成人在线网站| 国产一区在线观看视频| 亚洲伦伦在线| 亚洲国产日韩欧美在线图片| 亚洲影视在线播放| 一区二区欧美日韩| 美日韩精品免费| 久久九九99视频| 欧美日韩一区成人| 亚洲国产欧美一区二区三区同亚洲| 国产精品视频免费在线观看| 美女久久一区| 国产一区二区三区观看| 亚洲一级黄色片| 在线视频欧美精品| 欧美国产日韩一二三区| 欧美激情国产日韩精品一区18| 国产一区二区三区久久 | 亚洲青色在线| 亚洲国产精品一区在线观看不卡| 亚洲欧美在线另类| 性欧美暴力猛交69hd| 国产精品红桃| 中文欧美日韩| 午夜精品福利在线观看| 国产精品久久久久av| 一区二区久久久久久| 夜夜嗨一区二区三区| 欧美国产一区二区三区激情无套| 欧美成人性生活| 一区二区三区在线免费播放| 久久精品视频在线播放| 久久综合伊人| 91久久久久久| 欧美精品在线免费| 99国产精品99久久久久久| 一本色道久久88综合亚洲精品ⅰ| 欧美日韩免费在线视频| 日韩一本二本av| 亚洲资源av| 国产精品久久久久久久app| 中文亚洲免费| 久久九九久久九九| 亚洲第一伊人| 欧美日韩午夜视频在线观看| 国产精品99久久久久久有的能看| 欧美亚洲三区| 一区二区三区在线免费视频| 欧美精品123区| 亚洲视频一二| 老司机aⅴ在线精品导航| 亚洲人成欧美中文字幕| 欧美日韩在线播放三区| 午夜视频一区在线观看| 欧美h视频在线| 99亚洲视频| 国产精品永久| 噜噜爱69成人精品| 一本久久a久久精品亚洲| 久久精品卡一| 亚洲高清免费视频| 欧美屁股在线| 欧美一区二视频在线免费观看| 欧美成人精品一区二区| 亚洲一区二区三区四区中文| 国产一区二区三区久久久久久久久| 男女激情久久| 午夜久久资源| 亚洲另类春色国产| 久久久午夜视频| 亚洲午夜电影在线观看| 精品91在线| 欧美日韩第一页| 久久综合激情| 亚洲免费在线| 亚洲国产精品久久久久久女王| 午夜精品视频一区| 亚洲精品乱码久久久久久| 国产日韩欧美亚洲| 欧美日韩国产黄| 裸体歌舞表演一区二区| 午夜精品成人在线| 99热免费精品| 亚洲欧洲美洲综合色网| 老司机一区二区三区| 99成人在线| 亚洲国产片色| 一区二区视频免费完整版观看| 国产精品久久久久77777| 欧美激情精品久久久六区热门| 久久精品午夜| 亚洲欧美伊人| 亚洲欧美日韩精品久久久| 99国产精品99久久久久久粉嫩| 欧美黄色一区二区| 欧美+日本+国产+在线a∨观看| 久久精品国产99国产精品澳门| 亚洲综合日韩在线| 亚洲一区二区在线看| 日韩一级黄色大片| 99re8这里有精品热视频免费| 在线精品视频在线观看高清| 狠狠色狠狠色综合人人| 国产一区二区三区在线播放免费观看| 国产精品久久久久久久久久免费| 欧美日韩国产综合新一区| 欧美人体xx| 欧美日韩精品伦理作品在线免费观看| 欧美成人a视频| 欧美国产国产综合| 欧美精品v日韩精品v国产精品| 母乳一区在线观看| 欧美精品一区二区三区蜜桃| 欧美精品一区二区在线观看| 欧美日韩视频在线| 国产精品v亚洲精品v日韩精品| 欧美性猛交99久久久久99按摩| 国产精品久久久久国产精品日日| 国产精品卡一卡二卡三| 国产精品一区二区在线观看| 国产模特精品视频久久久久 | 国产原创一区二区| 在线观看欧美黄色| 亚洲激情黄色| 亚洲小视频在线观看| 欧美一区二区三区在线| 老司机精品导航| 亚洲欧洲一区二区三区| 在线综合亚洲欧美在线视频| 香蕉成人久久| 欧美成人精品在线视频| 欧美视频网址| 国产精品影音先锋| 亚洲国产成人久久综合一区| 亚洲少妇一区| 老司机免费视频久久| 亚洲国产精品女人久久久| 亚洲精品一品区二品区三品区| 亚洲欧美精品在线| 久久亚洲综合色一区二区三区| 欧美日韩国产综合视频在线观看| 国产日韩精品在线播放| 亚洲经典视频在线观看| 欧美一区二区| 亚洲福利视频一区| 亚洲综合三区| 欧美成人69av| 国产主播精品| 亚洲一区精品电影| 欧美sm重口味系列视频在线观看| 99re66热这里只有精品4| 久久免费国产精品| 国产精品五区| 日韩系列在线| 免费日韩av| 欧美一进一出视频| 欧美日韩在线综合| 136国产福利精品导航| 午夜伦理片一区| 亚洲精品色图| 久久精品中文字幕免费mv| 久久久久久久尹人综合网亚洲| 国产精品盗摄久久久| 亚洲精品一区二区三区蜜桃久| 久久久久久久久久久久久久一区 |