第一篇:MFC經(jīng)典繪圖方法總結(jié)
MFC經(jīng)典繪圖方法總結(jié)
Windows 繪圖的實質(zhì)就是利用 windows提供的圖形設(shè)備接口GDI(Graphics Device Interface)將圖形會制在顯示器上。
為了支持GDI繪圖,MFC提供了兩種重要的類:
設(shè)備上下文DC(Device Context)類,用于設(shè)置繪圖屬性和繪制圖形;
繪圖對象類,封裝了各種GDI繪圖對象,包括畫筆、刷子、字體、位圖、調(diào)色板和區(qū)域。
CDC類介紹: 在MFC中,CDC是設(shè)備上下文類的基類,派生類包括:CClientDC, CPaintDC, CWindowDC, CMetaFileDC類
CClientDC 客戶區(qū)設(shè)備上下文,繪制客戶區(qū)時
CPaintDC 一般發(fā)生在窗口需要重繪時
CWindwDC 可以繪制整個窗口,通常在窗口WM_NCPAINT消息的響應(yīng)函數(shù)CWnd::OnNCPaint()中使用
CMetaFileDC 專門用于圖元文件的繪制,圖元文件記錄一組GDI命令,重建圖形輸出。
CDC包含m_hDC和 m_hAttribDC二個設(shè)備上下文。CDC指導(dǎo)所有對m_hDC的輸出GDI調(diào)用(SetTextColor)以及對m_hAttribDC的大部分屬性GDI調(diào)用(GetTextColor)。
CDC對象的重要函數(shù)如下:
1、為指定設(shè)備創(chuàng)建上下文 virtual BOOL CreateDC(...)比如創(chuàng)建一個為屏幕的設(shè)備上下文
CDC dc;
dc.CreateDC(“DISPLAY”, NULL, NULL,NULL);
2、創(chuàng)建內(nèi)存設(shè)備上下文,與指定設(shè)備上下文兼容 virtual BOOL CreateCompatibleDC(CDC * pDC)
3、刪除CDC對象對應(yīng)的Windows設(shè)備上下文, 通常不調(diào)用該函數(shù)而是使用析構(gòu)程序 virtual BOOL DeleteDC();
4、將HDC句柄轉(zhuǎn)化為設(shè)備上下文的句柄: CDC *pDC=CDC::FromHandle(hDC)
5、選擇GDI對象入選到設(shè)備上下文中,一共有五種形式:
CPen * SelectObject(CPen * pPen);
CBrush * SelectObject(CBrush * pBrush);
virtual CFont * SelectObject(CFont * pFont);
CBitmap * SelectObject(CBitmap * pBitmap);
int SelectObject(CRgn * pRgn);
例: Cpen cpen;pen.CreatePen(PS_SOLID, 2, RGB(255,0,0));Cpen *pOldPen=(CPen*)pDC->SelectObject(&pen);//設(shè)置新畫筆,記錄舊畫筆
....pDC->SelectObject(pOldPen);//還原
畫筆
三種方法創(chuàng)建畫筆
1/構(gòu)造函數(shù):
CPen();
CPen(int nPenStyle, int nWidth, COLORREF crColor);
CPen(...)略
2/CreatePen(int nPenStyle, int nWidth, COLORREF crColor)
3/CreatePenIndirect(LPLOGPEN lpLogpen)
typedef struct tagLOGPEN{
UINT lopnStyle;
POINT lopnWidth;
COLORREF lopnColor;
}LOGPEN, *LPLOGPEN;
例:
LOGPEN lppn;
lppn.lopnColor=RGB(255,0,0);
lppn.lopnStype=PS_DASHDOT;
lgpn.lopnWidth.x=2;
lgpn.lopnWidth.y=2;
CPen pen;pen.CreatePenIndirect(&lppn);
畫刷
三種方法創(chuàng)建
1/構(gòu)造函數(shù):
CBrush();
CBrush(COLROREF crColor);
CBrush(int nIndex, COLORREF crColor);
nIndex 哪種類型的網(wǎng)格, HS_BDIAGONAL HS_CROSS
HS_VERTICAL
HS_HORIZONTAL
2/CreateSolidBrush(COLORREF crColor);
3/CreateHatchBrush(int nIndex , COLORREF crColor);
4/CreateBrushIndirect(const LOGBRUSH* lpLogBrush);
typedef struct tagBRUSH{
UINT lbStyle;
// BS_HATCHED, BS_SOLID , BS_NULL
COLORREF lopnColor;
LONG lbHatch;
//HS_BDIAGONAL HS_VERTICAL
HS_HORIZONTAL
}LOGBRUSH, *LPLOGBURSH;
例:
CRect Rect(0,0,200,200);
CBrush brush(HS_HORIZONTAL,RGB(0,255,0));
CBrush *pOldBursh=pDC->SelectObject(&brush);
pDC->Rectangle(Rect);
pDC->SelectObject(pOldBursh);圖形繪制
1.點繪制
//返回RGB值
COLORREF SetPixel(int x, int y, COLORREF crColor);
COLORREF SetPixel(POINT point, COLORREF crColor);
//返回BOOL值,繪制是否成功.BOOL SetPixelV(int x, int y, COLORREF crColor);
BOOL SetPixelV(POINT point, COLORREF crColor);2.直線繪制
//返回CPoint對象的x和y坐標(biāo)的前一次取值
CPoint MoveTo(int x, int y);
CPoint MoveTo(POINT point);
//返回繪制是否成功
BOOL MoveTo(int x, int y);
BOOL MoveTo(POINT point);
例:
CPen pen;pen.CreatePen(PS_SOLID,2,RGB(0,255,0));
HS_CROSS
CPen* oldPen =(CPen *)pDC->SelectObject(&pen);
CPoint oldPoint=pDC->MoveTo(600,300);
pDC->LineTo(500,500);
3.矩形繪制
1/矩形繪制
BOOL Rectangle(int x1, int y1, int x2, int y2);
BOOL Rectangle(LPRECT lpRect);
例:
pDC->SelectObject(oldPen);
pDC->Rectangle(0,0,600,300);
CRect Rect(0,0,300,200);
CBrush brush(HS_HORIZONTAL,RGB(0,255,0));
CBrush *pOldBursh=pDC->SelectObject(&brush);
pDC->Rectangle(&Rect);
pDC->SelectObject(pOldBursh);
例:
CPen pen;
pen.CreatePen(PS_DASH, 1,RGB(255,0,0));
LOGBRUSH lb;
memset(&lb,0, sizeof(lb));
lb.lbStyle=BS_HATCHED;
lb.lbHatch=HS_DIAGCROSS;
CBrush brush;
brush.CreateBrushIndirect(&lb);
CPen *pOldPen=(CPen *)pDC->SelectObject(& pen);
CBrush *pOldBrush=(CBrush*)pDC->SelectObject(&brush);
pDC->Rectangle(0,0,200,200);
pDC->SelectObject(pOldPen);
pDC->SelectObject(pOldBrush);
2/三維矩形線框繪制
void Draw3dRect(int x, int y, int cx, int cy , COLORREF clrTopLeft, COLORBEF clrBottomRight);
void Draw3dRect(LPCRECT lpRect, COLORREF clrTopLeft, COLORBEF clrBottomRight);
例:
pDC->Draw3dRect(100, 100, 200, 300, RGB(255,0,0), RGB(0,255,0));
3/表示焦點風(fēng)格矩形
void DrawFocusRect(LPCRECT lpRect);
例:
CRect rt(400,400, 450, 450);
pDC->DrawFocusRect(&rt);
4/繪制拖曳形線框
void DrawDragRect(LPCRECT lpRect , SIZE size LPCRECT lpRectLast, SIZE sizeLast, CBrush* pBrush=NULL , CBrush* pBrushLast=NULL);
5/圓角矩形
void RoundRect(LPCRECT lpRect , POINT point);
//point.x 橢圓寬, point.y 橢圓高
void RoundRect(int x1, int y1, int x2, int y2,int x3, int y3);
例:
pDC->RoundRect(250, 250, 400, 400, 50, 100);
4.橢圓繪制
BOOL Ellipse(LPCRECT lpRect)//橢圓的外接矩形范圍
文字繪制
TextOut函數(shù)
返回值是BOOL
BOOL TextOut(int x, int y, const CString & str);
virtual BOOL TextOut(int x, int y, LPCSTR lpszString, int nCount);
DrawText函數(shù) 返回值是文本高度
int DrawText(LPCSTR lpszString, int nCount, LPRECT lpRect, UNIT nFormat);
int DrawText(const CString& str, LPRECT lpRect, UNIT nFormat);
//DT_BOTTOM DT_LEFT...//注意:如果nFormat 參數(shù)指定了DT_CALCRECT標(biāo)志,由lpRect指定的矩形將會更新,以反映顯示文本需要的高度和寬度,但并不繪制顯示
文字背景色和前景色
virtual COLORREF SetBKColor(COLORREF crColor);int SetBKMode(int nBKMode);// nBKMode: OPAQUE, TRANSPARENT時,SetBKColor失效
例:
CRect rect;GetClientRect(&rect);pDC->FillSolidRect(rect,RGB(0,0,255));CString strText=L“VC++ BKColor Demo...”;pDC->SetTextColor(RGB(255,255,255));pDC->SetBkColor(RGB(255,0,0));pDC->SetBkMode(TRANSPARENT);pDC->TextOut(10,10,strText);文字字體
設(shè)置文字的字體會使用到MFC下的CFont類,然后調(diào)用CFont類下的四個成員函數(shù): CreateFont, CreateFontIndirect, CreatePointFont和 CreatePointFontIndirect,詳見msdn幫助 例: 1/CreateFont 函數(shù) CFont font;font.CreateFont(25, 0, 1800, 0, FW_BOLD, 1, 1, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FIXED_PITCH|FF_MODERN, L“Courier New”);CString strText=L“VC++ Font Demo...”;pDC->SetTextColor(RGB(255,0,0));CFont *pOldFont=(CFont*)pDC->SelectObject(&font);pDC->TextOut(210,210, strText);pDC->SelectObject(pOldFont);2/ CreateFontIndirect(const LOGFONT* lpLogFont);typedef struct tagLOGFONT{ //14個成員變量與世隔絕 CreateFont函數(shù)類似 }LOGFONT;3/如果只注重字體的高度和字體名時,使用CreatePointFont(int nPointSize, LPCSTR lpszFaceName, CDC* pDC=NULL);
位圖顯示
A:位圖介紹,CBitmap類封裝了Windows圖形設(shè)備接口中的位圖,并提供了操作位圖的成員函數(shù)
1/創(chuàng)建兼容位圖,使之與指定設(shè)備兼容.BOOL CreateCompatibleBitmap(CDC *pDC, int nWidth, int nHeight);
2/得到位圖信息,作用是填充BITMAP結(jié)構(gòu).int GetBitmap(BITMAP * pBitMap);
3/加載位圖資源,加載一個命名的位圖資源來初始化位圖對象.BOOL LoadBitmap(LPCSTR lpszResourceName);BOOL LoadBitmap(UINT nIDResuource);
B:顯示位圖,VC++提供 BitBlt, StretchBlt和 TransparentBit(需加入 msimg32.lib庫)1/ BOOL BitBlt(int x , int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, DWORD dwRop);//尺寸不變
2/ BOOL StretchBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC,int xSrc, int ySrc, int nSrcWidth, int nSrcHeight, DWORD dwRop);//支持縮放
/* dwRop一般設(shè)置為SRCCOPY */ 3/ BOOL TransparentBlt(HDC hdcDest, int nXOriginDest, int nYOriginDest, int nWidthDest, int nHeightDest,HDC hdcSrc, int nXoriginSrc, int nYOriginSrc, int nWidthSrc, int nHeightSrc, UINT crTransparent);例:
CBitmap bitmap;bitmap.LoadBitmap(IDB_BITAMBOW);
BITMAP bm;bitmap.GetBitmap(&bm);
CDC MemDC;MemDC.CreateCompatibleDC(pDC);CBitmap* pOldBitmap=(CBitmap *)MemDC.SelectObject(&bitmap);
CRect rect(10,10, bm.bmWidth, bm.bmHeight);
TransparentBlt(pDC->GetSafeHdc(), rect.left, rect.top, rect.Width()*5, rect.Height()*5, MemDC.GetSafeHdc(), 0, 0, bm.bmWidth, bm.bmHeight, RGB(0,0,0));//長寬擴大5倍,圖片中黑色的部分將作為透明處理
第二篇:MFC處理繪圖
(一)簡單的圖形輸出、點: pDC->SetPixel(Cpoint(200,200),RGB(255,0,0,));// 在 [200,200] 的位置畫一個紅點2、線: pDC->MoveTo(0,0);// 直線起點的坐標(biāo)為(0,0)
pDC->LineTo(100,100)// 從起點(0,0)到終點(100,100)畫一條直線、矩形: Crect rect(0,0,100,100);
pDC->Rectangle(&rect);// 畫一個長 100,寬 100 的矩形、圓和橢圓:
Crect rect(0,0,100,100);
pDC->Ellipse(&rect);
Crect rect(0,0,50,100);
pDC->Ellipse(&rect);、多邊形:
CPoint poly[4];
poly[0]=CPoint(0,0);
poly[1]=CPoint(50,50);
poly[2]=Cpoint(50,100);
poly[3]=Cpoint(0,50);
pDC->Polygon(poly,4);
(二)庫存對象
庫存對象是由操作系統(tǒng)維護(hù)的用于繪制屏幕的常用對象,包括庫存畫筆、畫刷、字體等。使用 SelectStockObject()函數(shù)可以直接選擇庫存對象,修改系統(tǒng)默認(rèn)值。
例如,在視圖中選用畫筆和畫刷庫存對象來畫圖。
Void Cexam3_3View::OnDraw(CDC*pDC)
{
Cexam3_2Doc*pDoc=GetDocument();
CRect rect;
Rect.SetRect(Cpoint(0,0),Cpoint(200,200));
pDC->SelectStockObject(WHITE_PEN);// 選用白色畫筆
pDC->SelectStockObject(GRAY_BRUSH);// 選用灰色畫刷
pDC->Rectangle(rect);
pDC->MoveTo(0,0);
pDC->LineTo(200,200);
pDC->MoveTo(0,200);
pDC->LineTo(200,0);
}
(三)創(chuàng)建和使用自定義畫刷和畫筆、創(chuàng)建 CPen 的的方法:
?定義時直接創(chuàng)建
Cpen MyPen(PS_SOLID,2,RGB(255,0,0));
(2)定義 Cpen 對象,再調(diào)用 CreatePen()函數(shù)
Cpen pen;
Pen.CreatePen(PS_SOLID,2,RGB(255,0,0));、創(chuàng)建畫刷的方法:
(1)創(chuàng)建實心畫刷的 CreateSolidBrush()函數(shù)
Cbrush bs;
Bs.CreateSolidBrush(RGB(255,0,0));
(2)創(chuàng)建帶陰影的畫刷的 CreateHatchBrush()函數(shù)
Bs.CreateHatchBrush(HS_CROSS,RGB(255,0,0));// 創(chuàng)建一個帶十字陰影的紅色畫刷
(3)創(chuàng)建位圖畫刷的 CreatePatternBrush()函數(shù)
本函數(shù)的應(yīng)用如下:
CbitMap bmp;
Bmp.LoadBitMap(IDB_MYBITMAP);
Cbrush bs;
Bs.CreatePatternBrush(&bmp);
例4_
3、在視圖中繪制三個圖形,一個用陰影風(fēng)格的畫刷畫的橢圓形,一個用深蘭色實心畫刷畫的圓角矩形,一個用淺灰色畫刷畫的餅形。
void CExam4_3View::OnDraw(CDC* pDC)
{
CExam4_3Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
//設(shè)置影象模式
pDC->SetMapMode(MM_ANISOTROPIC);
CPen NewPen,OldPen;
//將畫筆選入設(shè)備上下文
NewPen.CreatePen(PS_SOLID,5,RGB(0,0,255));
//創(chuàng)建深藍(lán)色實心畫刷
pDC->SelectObject(&NewPen);
CBrush NewBrush1,NewBrush2;
//將畫刷選入設(shè)備上下文
NewBrush1.CreateSolidBrush(RGB(0,0,128));
//繪制圓角矩形
pDC->RoundRect(200,100,330,200,15,15);
//將庫存對象淺灰畫刷選入設(shè)備上下文
pDC->SelectStockObject(LTGRAY_BRUSH);
//繪制餅圖
pDC->Pie(350,50,420,150,360,50,400,50);
//創(chuàng)建陰影畫刷
NewBrush2.CreateHatchBrush(HS_DIAGCROSS,RGB(125,125,125));
pDC->SelectObject(NewBrush2);
//繪制橢圓
pDC->Ellipse(50,50,150,150);
}
第三篇:MFC實踐總結(jié)
mfc編程實驗總結(jié)報告 知識總結(jié)+個人心得 2011年暑期mfc編程實驗報告 mfc編程實驗個人總結(jié)報告
一、mfc類、函數(shù)等知識小結(jié):
1、settimer(1, m_intlevel, null);在mfc程序中settimer被封裝在cwnd類中,調(diào)用就不用指定窗口句柄了于是settimer函數(shù)的原型變?yōu)椋? uint settimer(uint nidevent,uint nelapse,void(callback export *lpfntimer)(hwnd,uint ,yint ,dword))當(dāng)使用settimer函數(shù)的時候,就會生成一個計時器。函數(shù)中nidevent指的是計時器的標(biāo)識,也就是名字。nelapse指的是時間間隔,也就是每隔多長時間觸發(fā)一次事件。第三個參數(shù)是一個回調(diào)函數(shù),在這個函數(shù)里,放入你想要做的事情的代碼,你可以將它設(shè)定為null,也就是使用系統(tǒng)默認(rèn)的回調(diào)函數(shù),系統(tǒng)默認(rèn)認(rèn)的是ontime函數(shù)。這個函數(shù)怎么生成的呢?你需要在需要計時器的類的生成ontime函數(shù):在classwizard里,選擇需要計時器的類,添加wm_time消息映射,就自動生成ontime函數(shù)了。然后在函數(shù)里添加代碼,讓代碼實現(xiàn)功能。每隔一段時間就會自動執(zhí)行一次。例: settimer(1,1000,null);1:計時器的名稱;
1000:時間間隔,單位是毫秒; null:使用ontime函數(shù)。
當(dāng)不需要計時器的時候調(diào)用killtimer(nidevent);例如:killtimer(1);killtimer(1);
2、typedef struct{};(1)struct{ int x;int y;}test1;好,定義了 結(jié)構(gòu) test1,test1.x 和 test1.y 可以在語句里用了。(2)struct test {int x;int y;}test1;定義了結(jié)構(gòu) test1,test1.x 和 test1.y 可以在語句里用了。
與(1)比,省寫 了 test(3)typedef struct test {int x;int y;}text1,text2;此處時說了這種結(jié)構(gòu)體(類型)別名 叫 text1 或叫 text2,而不是定義了結(jié)構(gòu)體變量.真正在語句里用,還要寫: text1 test1;//定義結(jié)構(gòu)體變量
然后好用 test1.x test1.y 或?qū)?text2 test1;//定義結(jié)構(gòu)體變量
然后好用 test1.x test1.y
3、invalidate();//讓客戶區(qū)無效,即時重新繪制客戶區(qū) void invalidate(bool berase = true);該函數(shù)的作用是使整個窗口客戶區(qū)無效。窗口的客戶區(qū)無效意味著需要重繪,例如,如果一個被其它窗口遮住的窗口變成了前臺窗口,那么原來被遮住的部分就是無效的,需要重繪。這時windows會在應(yīng)用程序的消息隊列中放置wm_paint消息。mfc為窗口類提供了wm_paint的消息處理函數(shù)onpaint,onpaint負(fù)責(zé)重繪窗口。視圖類有一些例外,在視圖類的onpaint函數(shù)中調(diào)用了ondraw函數(shù),實際的重繪工作由ondraw來完成。參數(shù)berase為true時,重繪區(qū)域內(nèi)的背景將被擦除,否則,背景將保持不變。
4、cdc::rectangle(左上x,左上y,右下x,右下y);使用該函數(shù)畫一個矩形,可以用當(dāng)前的畫筆畫矩形輪廓,用當(dāng)前畫刷進(jìn)行填充。
函數(shù)原型:bool rectangle(hdc hdc, int nleftrect, int ntoprect, int nrightrect, int nbottomrect);
hdc:設(shè)備環(huán)境句柄。
nleftrect:指定矩形左上角的邏輯x坐標(biāo)。ntoprect:指定矩形左上角的邏輯y坐標(biāo)。nrightrect:指定矩形右下角的邏輯x坐標(biāo)。nbottomrect:指定矩形右下角的邏輯y坐標(biāo)。
5、cbrush:: cbrush//畫刷類 eg:cbrush brushstick(rgb(127, 127, 127));四種構(gòu)造函數(shù): cbrush();cbrush(colorref crcolor);cbrush(int nindex, colorref crcolor);cbrush(cbitmap* pbitmap);參數(shù)說明: crcolor指定畫刷的前景色(rgb方式)。如果畫刷是陰影線型的,則指定陰影線的顏色。nindex指定畫刷陰影線采用的風(fēng)格,取值如下: hs_bdiagonal45度的向下影線(從左到右)hs_cross水平和垂直方向以網(wǎng)格線作出陰影 hs_diagcross 45度的網(wǎng)格線陰影 hs_fdiagonal 45度的向上陰影線(從左到右)
hs_horizontal 水平的陰影線 hs_vertical 垂直的陰影線 pbitmap指向cbitmap對象的指針,該對象指定了畫刷要繪制的位
圖。
構(gòu)造函數(shù)說明:
6、messagebox(game over!);messagebox(null,text,title,button);參數(shù)title:string類型,指定消息對話框的標(biāo)題。text:指定消息對話框中顯示的消息,該參數(shù)可以是數(shù)值數(shù)據(jù)類型、字符串或boolean值。icon:icon枚舉類型,可選項,指定要在該對話框左側(cè)顯示的圖標(biāo)。button:button枚舉類型,可選項,指定顯示在該對話框底部的按鈕。default:數(shù)值型,可選項,指定作為缺省按鈕的按鈕編號,按鈕編號自左向右依次計數(shù),缺省值為1,如果該參數(shù)指定的編號超過了顯示的按鈕個數(shù),那么messagebox()函數(shù)將使用缺省值返回值integer。函數(shù)執(zhí)行成功時返回用戶選擇的按鈕編號(例如1、2、3等),發(fā)生錯誤時返回-1。如果任何參數(shù)的值為null,messagebox()函數(shù)返回null。
函數(shù)原型:
messagebox.show(text,title,messageboxbuttons,messageboxicon ,messageboxdefaultbuttons)參數(shù)說明:
(1)text:必選項,消息框的正文。
(2)title:可選項,消息框的標(biāo)題。(3)messageboxbuttons:可選項,消息框的按鈕設(shè)置,默認(rèn)只顯示【確定】按鈕。ok――確定 okcancel――確定和取消 abortretryignore――終止、重試和忽略 yesnocancel――是、否和取消 yesno――是和否 retrycancel――重試和取消
(4)messageboxicon:對話框中顯示的圖標(biāo)樣式,默認(rèn)不顯示任何圖標(biāo)。
question――問號 information、asterisk――i號 error、stop、hand――錯誤號 warning、exclamation――!號 none――不顯示任何圖標(biāo)
(5)messageboxdefaultbuttons:可選項,對話框中默認(rèn)選中的按鈕設(shè)置。
defaultbutton1――第1個button是默認(rèn)按鈕 defaultbutton2――第2個button是默認(rèn)按鈕 defaultbutton3――第3個button是默認(rèn)按鈕
7、memcpy(拷貝目的地,拷貝對象,拷貝長度);包含在頭文件#include
函數(shù)原型:
extern void *memcpy(void *destin, void *source, unsigned n);功能:
由source指向地址為起始地址的連續(xù)n個字節(jié)的數(shù)據(jù)復(fù)制到以destin指向地址為起始地址的空間內(nèi)。eg: int a=5,b=9;memcpy(a,b,sizeof(a));//將b按位拷給a;說明:
1.source和destin所指內(nèi)存區(qū)域不能重疊,函數(shù)返回指向destin的指針。2.與strcpy相比,memcpy并不是遇到 主站蜘蛛池模板: 又大又爽又黄无码a片| 妓女爽爽爽爽爽妓女8888| 中文字幕一区二区三区久久网站| 国产精品老热丝在线观看| 久久久久久久久久久国产| 亚洲爆乳无码一区二区三区| 女人18毛片水最多| 精品久久久久久久免费影院| 欧美日韩午夜群交多人轮换| 老少配老妇老熟女中文普通话| 亚洲夜色噜噜av在线观看| 国产乱xxⅹxx国语对白| 国产成人亚洲综合无码dvd| 成人免费无码不卡毛片| 亚洲av无码乱码在线观看牲色| 亚洲欧美激情在线一区| 在线看免费无码的av天堂| 欧美人与动人物牲交免费观看久久| 亚洲一区二区三区av激情| 国产亚洲精品精品精品| 后入内射国产一区二区| 欧美人与动牲交a欧美精品| 日韩亚洲欧美中文高清| av无码精品一区二区三区| 久久精品免费一区二区三区| 2022国产在线无码精品| 亚洲国产av一区二区三区| 夜色资源站www国产在线视频| 亚洲中文字幕久久精品无码va| 人人妻人人澡人人爽人人精品浪潮| 日本动漫瀑乳h动漫啪啪免费| 国产丝袜足j在线视频播放| 亚洲色成人网站www永久四虎| 国产92成人精品视频免费| 18禁黄网站免费| 亚洲中文无码人a∨在线导航| 国产精品aⅴ视频在线播放| 真人抽搐一进一出gif| 日本韩国三级观看| 精品欧洲av无码一区二区| 亚洲偷精品国产五月丁香麻豆|