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

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 鐘謝偉 閱讀(1540) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


<2012年5月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

導航

統計

常用鏈接

留言簿(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>
            亚洲一区二区三区四区中文 | 亚洲一区二区三区午夜| 免费看亚洲片| 另类av一区二区| 亚洲日本精品国产第一区| 欧美多人爱爱视频网站| 欧美精品激情| 性欧美xxxx大乳国产app| 亚洲欧美中文字幕| 激情自拍一区| 亚洲人成网站色ww在线| 欧美精品一区二| 亚洲综合欧美| 久久日韩粉嫩一区二区三区| 亚洲人成久久| 亚洲午夜国产成人av电影男同| 国产九九精品视频| 蜜臀91精品一区二区三区| 免费在线亚洲欧美| 亚洲一区二区三区中文字幕在线 | 一本色道久久88亚洲综合88| 国产精品无码专区在线观看| 久久婷婷丁香| 欧美性jizz18性欧美| 久久亚洲影院| 欧美日韩一区三区四区| 久久久国产精彩视频美女艺术照福利| 久久综合久久综合九色| 亚洲图片激情小说| 美女网站久久| 欧美在线综合视频| 欧美日韩成人在线| 久久一区二区三区av| 欧美亚州一区二区三区| 欧美二区在线| 国内外成人免费激情在线视频| 亚洲精品美女免费| 在线免费观看视频一区| 亚洲亚洲精品三区日韩精品在线视频| 在线精品视频一区二区| 亚洲欧美日韩国产综合在线| 日韩视频在线观看一区二区| 欧美中在线观看| 午夜亚洲一区| 欧美午夜精品久久久久久浪潮| 久久综合中文色婷婷| 国产精品三区www17con| 日韩午夜在线视频| 亚洲欧洲视频| 嫩草影视亚洲| 欧美成人a视频| 一区在线免费| 久久久久久夜| 久久综合免费视频影院| 国产九区一区在线| 亚洲欧美欧美一区二区三区| 亚洲色图制服丝袜| 欧美日本在线看| 亚洲国产成人精品视频| 在线日本高清免费不卡| 久久se精品一区二区| 久久精品青青大伊人av| 国产精品日韩欧美综合| 亚洲一区影院| 欧美中文字幕第一页| 国产精品视频在线观看| 亚洲自拍电影| 久久成人精品无人区| 国产毛片一区| 久久精彩视频| 欧美成人午夜视频| 亚洲青色在线| 欧美视频精品在线| 亚洲一区二区三区成人在线视频精品| 亚洲图色在线| 国产欧美丝祙| 久久精品国产欧美激情| 久热精品在线| 亚洲免费观看在线观看| 欧美日本一区二区高清播放视频| 亚洲精品网站在线播放gif| 亚洲一区二区在线播放| 欧美新色视频| 久久精品免费看| 欧美韩国日本一区| 一本大道久久a久久综合婷婷| 欧美精选午夜久久久乱码6080| 亚洲人精品午夜| 午夜精品一区二区三区四区| 国产日韩精品一区二区三区在线 | 国产精品99久久久久久久vr| 欧美影院午夜播放| 亚洲国产成人不卡| 欧美日韩精品免费看| 亚洲欧美成人在线| 免费久久99精品国产自| 亚洲视频在线观看免费| 国产一区二区三区久久久久久久久| 久久精品中文| 9久re热视频在线精品| 久久大香伊蕉在人线观看热2| 亚洲第一福利视频| 欧美午夜一区二区| 久久免费偷拍视频| 中文国产成人精品| 亚洲第一精品电影| 久久国产视频网| 宅男66日本亚洲欧美视频| 国产视频在线观看一区二区| 欧美不卡一区| 久久精品女人的天堂av| 99在线热播精品免费| 久久综合国产精品| 午夜精品视频网站| 亚洲精品久久久久中文字幕欢迎你 | 午夜精品理论片| 亚洲国产成人精品女人久久久 | 亚洲欧美日韩国产成人精品影院| 欧美成人久久| 久久久精彩视频| 亚洲淫片在线视频| 亚洲人成高清| 尤物精品国产第一福利三区| 国产精品推荐精品| 欧美日韩日韩| 欧美精品成人91久久久久久久| 久久国内精品自在自线400部| 一区二区高清| 亚洲精品乱码久久久久久按摩观| 久久综合久久88| 久久精品免费看| 欧美伊人久久久久久久久影院| 在线综合亚洲欧美在线视频| 亚洲精品一区久久久久久| 狠狠做深爱婷婷久久综合一区 | 欧美日韩精品国产| 欧美精品久久久久久| 鲁大师影院一区二区三区| 久久精品国产在热久久| 欧美一区国产二区| 欧美一级夜夜爽| 欧美在线日韩| 久久精品免费| 开心色5月久久精品| 久久嫩草精品久久久精品| 久久久国产一区二区| 欧美一区二区三区免费大片| 欧美一区二区三区在线| 午夜精品久久99蜜桃的功能介绍| 亚洲一区在线视频| 亚洲一级高清| 欧美有码在线视频| 久久精品视频免费| 蜜桃精品一区二区三区 | 亚洲综合日韩| 久久成人亚洲| 美日韩精品视频免费看| 欧美激情免费在线| 欧美性片在线观看| 国产麻豆综合| 亚洲丶国产丶欧美一区二区三区| 亚洲国产日韩一区二区| 亚洲精品日韩综合观看成人91| 亚洲伦理一区| 中文精品一区二区三区| 欧美一区综合| 欧美成人一品| 亚洲人成艺术| 亚洲欧美成人网| 美女黄网久久| 欧美视频一区二区三区在线观看| 国产精品久久999| 国语精品中文字幕| 亚洲精一区二区三区| 亚洲字幕一区二区| 免费高清在线一区| 亚洲剧情一区二区| 午夜精品久久久久久久久| 蜜臀av国产精品久久久久| 欧美揉bbbbb揉bbbbb| 激情成人亚洲| 一本色道综合亚洲| 久久久久久尹人网香蕉| 亚洲激情六月丁香| 亚洲欧美中文字幕| 欧美日本高清| 一区二区三区自拍| 亚洲欧美第一页| 欧美电影电视剧在线观看| 一区二区三区导航| 另类综合日韩欧美亚洲| 国产精品久久久久毛片软件 | 国产农村妇女毛片精品久久莱园子| 精品av久久707| 午夜精品久久久| 欧美粗暴jizz性欧美20| 亚洲欧美www| 欧美日韩亚洲一区二区| 亚洲高清在线观看一区| 欧美一区二区三区婷婷月色 |