久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS绘图

發(fā)布時間:2023/12/10 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS绘图 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文是《Programming iOS5》中Drawing一章的翻譯,考慮到主題完整性,在翻譯過程中我加入了一些書中沒有涉及到的內(nèi)容。希望本文能夠?qū)δ阌兴鶐椭?/p>

本文由海水的味道翻譯,轉(zhuǎn)載請注明譯者和出處,請勿用于商業(yè)用途!

Core Graphics Framework是一套基于C的API框架,使用了Quartz作為繪圖引擎。它提供了低級別、輕量級、高保真度的2D渲染。該框架可以用于基于路徑的繪圖、變換、顏色管理、脫屏渲染,模板、漸變、遮蔽、圖像數(shù)據(jù)管理、圖像的創(chuàng)建、遮罩以及PDF文檔的創(chuàng)建、顯示和分析。

iOS支持兩套圖形API族:Core Graphics/QuartZ 2D 和OpenGL ES。OpenGL ES是跨平臺的圖形API,屬于OpenGL的一個簡化版本。QuartZ 2D是蘋果公司開發(fā)的一套API,它是Core Graphics Framework的一部分。需要注意的是:OpenGL ES是應(yīng)用程序編程接口,該接口描述了方法、結(jié)構(gòu)、函數(shù)應(yīng)具有的行為以及應(yīng)該如何被使用的語義。也就是說它只定義了一套規(guī)范,具體的實現(xiàn)由設(shè)備制造商根據(jù)規(guī)范去做。而往往很多人對接口和實現(xiàn)存在誤解。舉一個不恰當?shù)谋扔?#xff1a;上發(fā)條的時鐘和裝電池的時鐘都有相同的可視行為,但兩者的內(nèi)部實現(xiàn)截然不同。因為制造商可以自由的實現(xiàn)Open GL ES,所以不同系統(tǒng)實現(xiàn)的OpenGL ES也存在著巨大的性能差異。

Core Graphics API所有的操作都在一個上下文中進行。所以在繪圖之前需要獲取該上下文并傳入執(zhí)行渲染的函數(shù)中。如果你正在渲染一副在內(nèi)存中的圖片,此時就需要傳入圖片所屬的上下文。獲得一個圖形上下文是我們完成繪圖任務(wù)的第一步,你可以將圖形上下文理解為一塊畫布。如果你沒有得到這塊畫布,那么你就無法完成任何繪圖操作。當然,有許多方式獲得一個圖形上下文,這里我介紹兩種最為常用的獲取方法。

第一種方法就是創(chuàng)建一個圖片類型的上下文。調(diào)用UIGraphicsBeginImageContextWithOptions函數(shù)就可獲得用來處理圖片的圖形上下文。利用該上下文,你就可以在其上進行繪圖,并生成圖片。調(diào)用UIGraphicsGetImageFromCurrentImageContext函數(shù)可從當前上下文中獲取一個UIImage對象。記住在你所有的繪圖操作后別忘了調(diào)用UIGraphicsEndImageContext函數(shù)關(guān)閉圖形上下文。

第二種方法是利用cocoa為你生成的圖形上下文。當你子類化了一個UIView并實現(xiàn)了自己的drawRect:方法后,一旦drawRect:方法被調(diào)用,Cocoa就會為你創(chuàng)建一個圖形上下文,此時你對圖形上下文的所有繪圖操作都會顯示在UIView上。

判斷一個上下文是否為當前圖形上下文需要注意的幾點:

  • UIGraphicsBeginImageContextWithOptions函數(shù)不僅僅是創(chuàng)建了一個適用于圖形操作的上下文,并且該上下文也屬于當前上下文。
  • drawRect方法被調(diào)用時,UIView的繪圖上下文屬于當前圖形上下文。
  • 回調(diào)方法所持有的context:參數(shù)并不會讓任何上下文成為當前圖形上下文。此參數(shù)僅僅是對一個圖形上下文的引用罷了。

作為初學(xué)者,很容易被UIKit和Core Graphics兩個支持繪圖的框架迷惑。

  UIKit

  像UIImage、NSString(繪制文本)、UIBezierPath(繪制形狀)、UIColor都知道如何繪制自己。這些類提供了功能有限但使用方便的方法來讓我們完成繪圖任務(wù)。一般情況下,UIKit就是我們所需要的。

使用UiKit,你只能在當前上下文中繪圖,所以如果你當前處于UIGraphicsBeginImageContextWithOptions函數(shù)或drawRect:方法中,你就可以直接使用UIKit提供的方法進行繪圖。如果你持有一個context:參數(shù),那么使用UIKit提供的方法之前,必須將該上下文參數(shù)轉(zhuǎn)化為當前上下文。幸運的是,調(diào)用UIGraphicsPushContext?函數(shù)可以方便的將context:參數(shù)轉(zhuǎn)化為當前上下文,記住最后別忘了調(diào)用UIGraphicsPopContext函數(shù)恢復(fù)上下文環(huán)境。

Core Graphics

這是一個繪圖專用的API族,它經(jīng)常被稱為QuartZ或QuartZ 2D。Core Graphics是iOS上所有繪圖功能的基石,包括UIKit。

使用Core Graphics之前需要指定一個用于繪圖的圖形上下文(CGContextRef),這個圖形上下文會在每個繪圖函數(shù)中都會被用到。如果你持有一個圖形上下文context:參數(shù),那么你等同于有了一個圖形上下文,這個上下文也許就是你需要用來繪圖的那個。如果你當前處于UIGraphicsBeginImageContextWithOptions函數(shù)drawRect:方法中,并沒有引用一個上下文。為了使用Core Graphics,你可以調(diào)用UIGraphicsGetCurrentContext函數(shù)獲得當前的圖形上下文。

至此,我們有了兩大繪圖框架的支持以及三種獲得圖形上下文的方法(drawRect:、drawRect: inContext:、UIGraphicsBeginImageContextWithOptions)。那么我們就有6種繪圖的形式。如果你有些困惑了,不用怕,我接下來將說明這6種情況。無需擔心還沒有具體的繪圖命令,你只需關(guān)注上下文如何被創(chuàng)建以及我們是在使用UIKit還是Core Graphics。

第一種繪圖形式:在UIView的子類方法drawRect:中繪制一個藍色圓,使用UIKit在Cocoa為我們提供的當前上下文中完成繪圖任務(wù)。

- (void) drawRect: (CGRect) rect {UIBezierPath* p = [UIBezierPathbezierPathWithOvalInRect:CGRectMake(0,0,100,100)];[[UIColor blueColor] setFill];[p fill]; }

第二種繪圖形式:使用Core Graphics實現(xiàn)繪制藍色圓。

- (void) drawRect: (CGRect) rect {CGContextRef con = UIGraphicsGetCurrentContext();CGContextAddEllipseInRect(con, CGRectMake(0,0,100,100));CGContextSetFillColorWithColor(con, [UIColor blueColor].CGColor);CGContextFillPath(con); }

第三種繪圖形式:我將在UIView子類的drawLayer:inContext:方法中實現(xiàn)繪圖任務(wù)。drawLayer:inContext:方法是一個繪制圖層內(nèi)容的代理方法。為了能夠調(diào)用drawLayer:inContext:方法,我們需要設(shè)定圖層的代理對象。但要注意,不應(yīng)該將UIView對象設(shè)置為顯示層的委托對象,這是因為UIView對象已經(jīng)是隱式層的代理對象,再將它設(shè)置為另一個層的委托對象就會出問題。輕量級的做法是:編寫負責繪圖形的代理類。在MyView.h文件中聲明如下代碼:

@interface MyLayerDelegate : NSObject @end

然后MyView.m文件中實現(xiàn)接口代碼:

@implementation MyLayerDelegate- (void)drawLayer:(CALayer*)layer inContext:(CGContextRef)ctx {UIGraphicsPushContext(con);UIBezierPath* p = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0,0,100,100)];[[UIColor blueColor] setFill];[p fill];UIGraphicsPopContext(); }@end

直接將代理類的實現(xiàn)代碼放在MyView.m文件的#import代碼的下面,這樣感覺好像在使用私有類完成繪圖任務(wù)(雖然這不是私有類)。需要注意的是,我們所引用的上下文并不是當前上下文,所以為了能夠使用UIKit,我們需要將引用的上下文轉(zhuǎn)變成當前上下文。

編寫完代理類實現(xiàn)代碼,接下來編寫使用這個代理類的代碼:

MyView *myView = [[MyView alloc] initWithFrame: CGRectMake(0, 0, 320, 480)]; CALayer *myLayer = [CALayer layer]; myLayer.delegate = self; [myView.layer addSublayer:myLayer]; [myView setNeedsDisplay]; // 調(diào)用此方法,drawLayer: inContext:方法才會被調(diào)用。

第四種繪圖形式: 使用Core Graphics在drawLayer:inContext:方法中實現(xiàn)同樣操作,代碼如下:

- (void)drawLayer:(CALayer*)lay inContext:(CGContextRef)con {CGContextAddEllipseInRect(con, CGRectMake(0,0,100,100));CGContextSetFillColorWithColor(con, [UIColor blueColor].CGColor);CGContextFillPath(con); }

最后,演示UIGraphicsBeginImageContextWithOptions的用法,并從上下文中生成一個UIImage對象。生成UIImage對象的代碼并不需要等待某些方法被調(diào)用后或在UIView的子類中才能去做。

第五種繪圖形式: 使用UIKit實現(xiàn):

UIGraphicsBeginImageContextWithOptions(CGSizeMake(100,100), NO, 0); UIBezierPath* p = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0,0,100,100)]; [[UIColor blueColor] setFill]; [p fill]; UIImage* im = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext();

解釋一下UIGraphicsBeginImageContextWithOptions函數(shù)參數(shù)的含義:第一個參數(shù)表示所要創(chuàng)建的圖片的尺寸;第二個參數(shù)用來指定所生成圖片的背景是否為不透明,如上我們使用YES而不是NO,則我們得到的圖片背景將會是黑色,顯然這不是我想要的;第三個參數(shù)指定生成圖片的縮放因子,這個縮放因子與UIImage的scale屬性所指的含義是一致的。傳入0則表示讓圖片的縮放因子根據(jù)屏幕的分辨率而變化,所以我們得到的圖片不管是在單分辨率還是視網(wǎng)膜屏上看起來都會很好。

第六種繪圖形式: 使用Core Graphics實現(xiàn):

UIGraphicsBeginImageContextWithOptions(CGSizeMake(100,100), NO, 0); CGContextRef con = UIGraphicsGetCurrentContext(); CGContextAddEllipseInRect(con, CGRectMake(0,0,100,100)); CGContextSetFillColorWithColor(con, [UIColor blueColor].CGColor); CGContextFillPath(con); UIImage* im = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext();

UIKit和Core Graphics可以在相同的圖形上下文中混合使用。在iOS 4.0之前,使用UIKit和UIGraphicsGetCurrentContext被認為是線程不安全的。而在iOS4.0以后蘋果讓繪圖操作在第二個線程中執(zhí)行解決了此問題。

  UIImage常用的繪圖操作

  一個UIImage對象提供了向當前上下文繪制自身的方法。我們現(xiàn)在已經(jīng)知道如何獲取一個圖片類型的上下文并將它轉(zhuǎn)變成當前上下文。

平移操作:下面的代碼展示了如何將UIImage繪制在當前的上下文中。

UIImage* mars = [UIImage imageNamed:@"Mars.png"]; CGSize sz = [mars size]; UIGraphicsBeginImageContextWithOptions(CGSizeMake(sz.width*2, sz.height), NO, 0); [mars drawAtPoint:CGPointMake(0,0)]; [mars drawAtPoint:CGPointMake(sz.width,0)]; UIImage* im = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); UIImageView* iv = [[UIImageView alloc] initWithImage:im]; [self.window.rootViewController.view addSubview: iv]; iv.center = self.window.center;

圖1 UIImage平移處理

  縮放操作:下面代碼展示了如何對UIImage進行縮放操作:

UIImage* mars = [UIImage imageNamed:@"Mars.png"]; CGSize sz = [mars size]; UIGraphicsBeginImageContextWithOptions(CGSizeMake(sz.width*2, sz.height*2), NO, 0); [mars drawInRect:CGRectMake(0,0,sz.width*2,sz.height*2)]; [mars drawInRect:CGRectMake(sz.width/2.0, sz.height/2.0, sz.width, sz.height) blendMode:kCGBlendModeMultiply alpha:1.0]; UIImage* im = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext();

圖2 UIImage縮放處理

  UIImage沒有提供截取圖片指定區(qū)域的功能。但通過創(chuàng)建一個較小的圖形上下文并移動圖片到一個適當?shù)膱D形上下文坐標系內(nèi),指定區(qū)域內(nèi)的圖片就會被獲取。

裁剪操作:下面代碼展示了如何獲取圖片的右半邊:

UIImage* mars = [UIImage imageNamed:@"Mars.png"]; CGSize sz = [mars size]; UIGraphicsBeginImageContextWithOptions(CGSizeMake(sz.width/2.0, sz.height), NO, 0); [mars drawAtPoint:CGPointMake(-sz.width/2.0, 0)]; UIImage* im = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext();

以上的代碼首先創(chuàng)建一個一半圖片寬度的圖形上下文,然后將圖片左上角原點移動到與圖形上下文負X坐標對齊,從而讓圖片只有右半部分與圖形上下文相交。

圖3 UIImage裁剪原理

  CGImage常用的繪圖操作

UIImage的Core Graphics版本是CGImage(具體類型是CGImageRef)。兩者可以直接相互轉(zhuǎn)化: 使用UIImage的CGImage屬性可以訪問Quartz圖片數(shù)據(jù);將CGImage作為UIImage方法imageWithCGImage:initWithCGImage:的參數(shù)創(chuàng)建UIImage對象。

一個CGImage對象可以讓你獲取原始圖片中指定區(qū)域的圖片(也可以獲取指定區(qū)域外的圖片,UIImage卻辦不到)。

下面的代碼展示了將圖片拆分成兩半,并分別繪制在上下文的左右兩邊:

UIImage* mars = [UIImage imageNamed:@"Mars.png"]; // 抽取圖片的左右半邊 CGSize sz = [mars size]; CGImageRef marsLeft = CGImageCreateWithImageInRect([mars CGImage],CGRectMake(0,0,sz.width/2.0,sz.height)); CGImageRef marsRight = CGImageCreateWithImageInRect([mars CGImage],CGRectMake(sz.width/2.0,0,sz.width/2.0,sz.height)); // 將每一個CGImage繪制到圖形上下文中 UIGraphicsBeginImageContextWithOptions(CGSizeMake(sz.width*1.5, sz.height), NO, 0); CGContextRef con = UIGraphicsGetCurrentContext(); CGContextDrawImage(con, CGRectMake(0,0,sz.width/2.0,sz.height), marsLeft); CGContextDrawImage(con, CGRectMake(sz.width,0,sz.width/2.0,sz.height), marsRight); UIImage* im = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); // 記得釋放內(nèi)存,ARC在這里無效 CGImageRelease(marsLeft); CGImageRelease(marsRight);

你也許發(fā)現(xiàn)繪出的圖是上下顛倒的!圖片的顛倒并不是因為被旋轉(zhuǎn)了。當你創(chuàng)建了一個CGImage并使用CGContextDrawImage方法繪圖就會引起這種問題。這主要是因為原始的本地坐標系統(tǒng)(坐標原點在左上角)與目標上下文(坐標原點在左下角)不匹配。有很多方法可以修復(fù)這個問題,其中一種方法就是使用CGContextDrawImage方法先將CGImage繪制到UIImage上,然后獲取UIImage對應(yīng)的CGImage,此時就得到了一個倒轉(zhuǎn)的CGImage。當再調(diào)用CGContextDrawImage方法,我們就將倒轉(zhuǎn)的圖片還原回來了。實現(xiàn)代碼如下:

CGImageRef flip (CGImageRef im) {CGSize sz = CGSizeMake(CGImageGetWidth(im), CGImageGetHeight(im));UIGraphicsBeginImageContextWithOptions(sz, NO, 0);CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(0, 0, sz.width, sz.height), im);CGImageRef result = [UIGraphicsGetImageFromCurrentImageContext() CGImage];UIGraphicsEndImageContext();return result;}

現(xiàn)在將之前的代碼修改如下:

CGContextDrawImage(con, CGRectMake(0,0,sz.width/2.0,sz.height), flip(marsLeft)); CGContextDrawImage(con, CGRectMake(sz.width,0,sz.width/2.0,sz.height), flip(marsRight));

  然而,這里又出現(xiàn)了另外一個問題:在雙分辨率的設(shè)備上,如果我們的圖片文件是高分辨率(@2x)版本,上面的繪圖就是錯誤的。原因在于對于UIImage來說,在加載原始圖片時使用imageNamed:方法,它會自動根據(jù)所在設(shè)備的分辨率類型選擇圖片,并且UIImage通過設(shè)置用來適配的scale屬性補償圖片的兩倍尺寸。但是一個CGImage對象并沒有scale屬性,它不知道圖片文件的尺寸是否為兩倍!所以當調(diào)用UIImage的CGImage方法,你不能假定所獲得的CGImage尺寸與原始UIImage是一樣的。在單分辨率和雙分辨率下,一個UIImage對象的size屬性值都是一樣的,但是雙分辨率UIImage對應(yīng)的CGImage是單分辨率UIImage對應(yīng)的CGImage的兩倍大。所以我們需要修改上面的代碼,讓其在單雙分辨率下都可以工作。代碼如下:

UIImage* mars = [UIImage imageNamed:@"Mars.png"]; CGSize sz = [mars size]; // 轉(zhuǎn)換CGImage并使用對應(yīng)的CGImage尺寸截取圖片的左右部分 CGImageRef marsCG = [mars CGImage]; CGSize szCG = CGSizeMake(CGImageGetWidth(marsCG), CGImageGetHeight(marsCG)); CGImageRef marsLeft = CGImageCreateWithImageInRect(marsCG,CGRectMake(0,0,szCG.width/2.0,szCG.height)); CGImageRef marsRight = CGImageCreateWithImageInRect(marsCG, CGRectMake(szCG.width/2.0,0,szCG.width/2.0,szCG.height)); UIGraphicsBeginImageContextWithOptions(CGSizeMake(sz.width*1.5, sz.height), NO, 0); //剩下的和之前的代碼一樣,修復(fù)倒置問題 CGContextRef con = UIGraphicsGetCurrentContext(); CGContextDrawImage(con, CGRectMake(0,0,sz.width/2.0,sz.height),flip(marsLeft)); CGContextDrawImage(con, CGRectMake(sz.width,0,sz.width/2.0,sz.height),flip(marsRight)); UIImage* im = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); CGImageRelease(marsLeft); CGImageRelease(marsRight);

  上面的代碼初看上去很繁雜,不過不用擔心,這里還有另一種修復(fù)倒置問題的方案。相對于使用flip函數(shù),你可以在繪圖之前將CGImage包裝進UIImage中,這樣做有兩大優(yōu)點:

  • 當UIImage繪圖時它會自動修復(fù)倒置問題
  • 當你從CGImage轉(zhuǎn)化為Uimage時,可調(diào)用imageWithCGImage:scale:orientation:方法生成CGImage作為對縮放性的補償。

  所以這是一個解決倒置和縮放問題的自包含方法。

  代碼如下:

UIImage* mars = [UIImage imageNamed:@"Mars.png"]; CGSize sz = [mars size]; CGImageRef marsCG = [mars CGImage]; CGSize szCG = CGSizeMake(CGImageGetWidth(marsCG), CGImageGetHeight(marsCG)); CGImageRef marsLeft = CGImageCreateWithImageInRect(marsCG, CGRectMake(0,0,szCG.width/2.0,szCG.height)); CGImageRef marsRight = CGImageCreateWithImageInRect(marsCG, CGRectMake(szCG.width/2.0,0,szCG.width/2.0,szCG.height)); UIGraphicsBeginImageContextWithOptions(CGSizeMake(sz.width*1.5, sz.height), NO, 0); [[UIImage imageWithCGImage:marsLeftscale:[mars scale]orientation:UIImageOrientationUp]drawAtPoint:CGPointMake(0,0)]; [[UIImage imageWithCGImage:marsRightscale:[mars scale]orientation:UIImageOrientationUp]drawAtPoint:CGPointMake(sz.width,0)]; UIImage* im = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); CGImageRelease(marsLeft); CGImageRelease(marsRight);

 還有另一種解決倒置問題的方案是在繪制CGImage之前,對上下文應(yīng)用變換操作,有效地倒置上下文的內(nèi)部坐標系統(tǒng)。這里先不做討論。

 為什么會發(fā)生倒置問題

 究其原因是因為Core Graphics源于Mac OS X系統(tǒng),在Mac OS X中,坐標原點在左下方并且正y坐標是朝上的,而在iOS中,原點坐標是在左上方并且正y坐標是朝下的。在大多數(shù)情況下,這不會出現(xiàn)任何問題,因為圖形上下文的坐標系統(tǒng)是會自動調(diào)節(jié)補償?shù)摹5莿?chuàng)建和繪制一個CGImage對象時就會暴露出倒置問題。

  CIFilter與CIImage

CIFilter與CIImage是iOS 5新引入的,雖然它們已在MAX OS X系統(tǒng)中存在多年。前綴“CI”表示Core Image,這是一種使用數(shù)學(xué)濾鏡變換圖片的技術(shù)。但是你不要去幻想iOS提供了像Photoshop軟件那樣強大的濾鏡功能。使用Core Image之前你需要將CoreImage.framework框架導(dǎo)入到你的target之中。

所謂濾鏡指的是CIFilter類,濾鏡可被分為以下幾類:

模板與漸變類

這兩類濾鏡創(chuàng)建的CIImage可以和其他的CIImage進行合并,比如一種單色,一個棋盤,條紋,亦或是漸變。

合成類

此類濾鏡可以將一張圖片與另外的圖片合并,合成濾鏡模式常見于圖形處理軟件Photoshop中。

色彩類

此濾鏡調(diào)整、修改圖片的色彩。因此你可以改變一張圖片的飽和度、色度、亮度、對比度、伽馬、白點、曝光度、陰影、高亮等屬性。

幾何變換類

此類濾鏡可對圖片執(zhí)行基本的幾何變換,比如縮放、旋轉(zhuǎn)、裁剪。

CIFilter使用起來非常的簡單。CIFilter看上去就像一個由鍵值組成的字典。它生成一個CIImage對象作為其輸出。一般地,一個濾鏡有一個或多個輸入,而對于部分濾鏡,生成的圖片是基于其他類型的參數(shù)值。CIFilter對象是一個集合,可使用鍵值對進行檢索。通過提供濾鏡的字符串名稱創(chuàng)建一個濾鏡,如果想知道有哪些濾鏡,可以查詢蘋果的Core Image Filter Reference文檔,或是調(diào)用CIFilter的類方法filterNamesInCategories:,參數(shù)值為nil。每一個濾鏡擁有一小部分用來確定其行為的鍵值。如果你想修改某一個鍵(比如亮度鍵)對應(yīng)的值,你可以調(diào)用setValue:forKey:方法或當你指定一個濾鏡名時提供所有鍵值對。

需要處理的圖片必須是CIImage類型,調(diào)用initWithCGImage:方法可獲得CIImage。因為CGImage又是作為濾鏡的輸出,因此濾鏡之間可被連接在一起(將濾鏡的輸出作為initWithCGImage:方法的輸入?yún)?shù))

當你構(gòu)建一個濾鏡鏈時,并沒有做復(fù)雜的運算。只有當整個濾鏡鏈需要輸出一個CGImage時,密集型計算才會發(fā)生。調(diào)用contextWithOptions:createCGImage: fromRect:方法創(chuàng)建CIContext。與以往不同的地方是CIImage沒有frame與bounds屬性;只有extent屬性。你將非常頻繁的使用這個屬性作為createCGImage: fromRect:方法的第二個參數(shù)。

接下來我將演示Core Image的使用。首先創(chuàng)建一個徑向漸變的濾鏡,該濾鏡是從白到黑的漸變方式,白色區(qū)域的半徑默認是100。接著將其與一張使用CIDarkenBlendMode濾鏡的圖片合成。CIDarkenBlendMode的作用是背景圖片樣本將被源圖片的黑色部分替換掉。

代碼如下:

UIImage* moi = [UIImage imageNamed:@"Mars.jpeg"]; CIImage* moi2 = [[CIImage alloc] initWithCGImage:moi.CGImage]; CIFilter* grad = [CIFilter filterWithName:@"CIRadialGradient"]; CIVector* center = [CIVector vectorWithX:moi.size.width / 2.0 Y:moi.size.height / 2.0]; // 使用setValue:forKey:方法設(shè)置濾鏡屬性 [grad setValue:center forKey:@"inputCenter"]; // 在指定濾鏡名時提供所有濾鏡鍵值對 CIFilter* dark = [CIFilter filterWithName:@"CIDarkenBlendMode" keysAndValues:@"inputImage", grad.outputImage, @"inputBackgroundImage", moi2, nil]; CIContext* c = [CIContext contextWithOptions:nil]; CGImageRef moi3 = [c createCGImage:dark.outputImage fromRect:moi2.extent]; UIImage* moi4 = [UIImage imageWithCGImage:moi3 scale:moi.scale orientation:moi.imageOrientation]; CGImageRelease(moi3);

圖4 圖片合成快照

這個例子可能沒有什么吸引人的地方,因為所有一切都可以使用Core Graphics完成。除了Core Image是使用GPU處理,可能有點吸引人。Core Graphics也可以做到徑向漸變并使用混合模式合成圖片。但Core Image要簡單得多,特別是當你有多個圖片輸入想重用一個濾鏡鏈時。并且Core Image的顏色調(diào)整功能比Core Graphics更加強大。對了,Core Image還能實現(xiàn)自動人臉識別哦!

  繪制一個UIView

繪制一個UIVIew最靈活的方式就是由它自己完成繪制。實際上你不是繪制一個UIView,你只是子類化了UIView并賦予子類繪制自己的能力。當一個UIVIew需要執(zhí)行繪圖操作的時,?drawRect:方法就會被調(diào)用。覆蓋此方法讓你獲得繪圖操作的機會。當drawRect:方法被調(diào)用,當前圖形上下文也被設(shè)置為屬于視圖的圖形上下文。你可以使用Core Graphics或UIKit提供的方法將圖形畫到該上下文中。

你不應(yīng)該手動調(diào)用drawRect:方法!如果你想調(diào)用drawRect:方法更新視圖,只需發(fā)送setNeedsDisplay方法。這將使得drawRect:方法會在下一個適當?shù)臅r間調(diào)用。當然,不要覆蓋drawRect:方法除非你知道這樣做絕對合法。比方說,在UIImageView子類中覆蓋drawRect:方法是不合法的,你將得不到你繪制的圖形。

在UIView子類的drawRect:方法中無需調(diào)用super,因為本身UIView的drawRect:方法是空的。為了提高一些繪圖性能,你可以調(diào)用setNeedsDisplayInRect方法重新繪制視圖的子區(qū)域,而視圖的其他部分依然保持不變。

一般情況下,你不應(yīng)該過早的進行優(yōu)化。繪圖代碼可能看上去非常的繁瑣,但它們是非常快的。并且iOS繪圖系統(tǒng)自身也是非常高效,它不會頻繁調(diào)用drawRect:方法,除非迫不得已(或調(diào)用了setNeedsDisplay方法)。一旦一個視圖已由自己繪制完成,那么繪制的結(jié)果會被緩存下來留待重用,而不是每次重頭再來。(蘋果公司將緩存繪圖稱為視圖的位圖存儲回填(bitmap backing store))。你可能會發(fā)現(xiàn)drawRect:方法中的代碼在整個應(yīng)用程序生命周期內(nèi)只被調(diào)用了一次!事實上,將代碼移到drawRect:方法中是提高性能的普遍做法。這是因為繪圖引擎直接對屏幕進行渲染相對于先是脫屏渲染然后再將像素拷貝到屏幕要來的高效。

當視圖的backgroundColor為nil并且opaque屬性為YES,視圖的背景顏色就會變成黑色。

  Core Graphics上下文屬性設(shè)置

當你在圖形上下文中繪圖時,當前圖形上下文的相關(guān)屬性設(shè)置將決定繪圖的行為與外觀。因此,繪圖的一般過程是先設(shè)定好圖形上下文參數(shù),然后繪圖。比方說,要畫一根紅線,接著畫一根藍線。那么首先需要將上下文的線條顏色屬性設(shè)定為為紅色,然后畫紅線;接著設(shè)置上下文的線條顏色屬性為藍色,再畫出藍線。表面上看,紅線和藍線是分開的,但事實上,在你畫每一條線時,線條顏色卻是整個上下文的屬性。無論你用的是UIKit方法還是Core Graphics函數(shù)。

因為圖形上下文在每一時刻都有一個確定的狀態(tài),該狀態(tài)概括了圖形上下文所有屬性的設(shè)置。為了便于操作這些狀態(tài),圖形上下文提供了一個用來持有狀態(tài)的棧。調(diào)用CGContextSaveGState函數(shù),上下文會將完整的當前狀態(tài)壓入棧頂;調(diào)用CGContextRestoreGState函數(shù),上下文查找處在棧頂?shù)臓顟B(tài),并設(shè)置當前上下文狀態(tài)為棧頂狀態(tài)。

因此一般繪圖模式是:在繪圖之前調(diào)用CGContextSaveGState函數(shù)保存當前狀態(tài),接著根據(jù)需要設(shè)置某些上下文狀態(tài),然后繪圖,最后調(diào)用CGContextRestoreGState函數(shù)將當前狀態(tài)恢復(fù)到繪圖之前的狀態(tài)。要注意的是,CGContextSaveGState函數(shù)和CGContextRestoreGState函數(shù)必須成對出現(xiàn),否則繪圖很可能出現(xiàn)意想不到的錯誤,這里有一個簡單的做法避免這種情況。代碼如下:

- (void)drawRect:(CGRect)rect {CGContextRef ctx = UIGraphicsGetCurrentContext();CGContextSaveGState(ctx);{// 繪圖代碼}CGContextRestoreGState(ctx); }

但你不需要在每次修改上下文狀態(tài)之前都這樣做,因為你對某一上下文屬性的設(shè)置并不一定會和之前的屬性設(shè)置或其他的屬性設(shè)置產(chǎn)生沖突。你完全可以在不調(diào)用保存和恢復(fù)函數(shù)的情況下先設(shè)置線條顏色為紅色,然后再設(shè)置為藍色。但在一定情況下,你希望你對狀態(tài)的設(shè)置是可撤銷的,我將在接下來討論這樣的情況。

許多的屬性組成了一個圖形上下文狀態(tài),這些屬性設(shè)置決定了在你繪圖時圖形的外觀和行為。下面我列出了一些屬性和對應(yīng)修改屬性的函數(shù);雖然這些函數(shù)是關(guān)于Core Graphics的,但記住,實際上UIKit同樣是調(diào)用這些函數(shù)操縱上下文狀態(tài)。

線條的寬度和線條的虛線樣式

  CGContextSetLineWidthCGContextSetLineDash

線帽和線條聯(lián)接點樣式

  CGContextSetLineCap、CGContextSetLineJoin、CGContextSetMiterLimit

線條顏色和線條模式

  CGContextSetRGBStrokeColor、CGContextSetGrayStrokeColor、CGContextSetStrokeColorWithColor、CGContextSetStrokePattern

填充顏色和模式

  CGContextSetRGBFillColor,CGContextSetGrayFillColor,CGContextSetFillColorWithColor, CGContextSetFillPattern

陰影

  CGContextSetShadow、CGContextSetShadowWithColor

混合模式

  CGContextSetBlendMode(決定你當前繪制的圖形與已經(jīng)存在的圖形如何被合成)

整體透明度

  CGContextSetAlpha(個別顏色也具有alpha成分)

文本屬性

  CGContextSelectFont、CGContextSetFont、CGContextSetFontSize、CGContextSetTextDrawingMode、CGContextSetCharacterSpacing

是否開啟反鋸齒和字體平滑

  CGContextSetShouldAntialias、CGContextSetShouldSmoothFonts

另外一些屬性設(shè)置:

裁剪區(qū)域:在裁剪區(qū)域外繪圖不會被實際的畫出來。

變換(或稱為“CTM“,意為當前變換矩陣):?改變你隨后指定的繪圖命令中的點如何被映射到畫布的物理空間。

許多這些屬性設(shè)置接下來我都會舉例說明。

  路徑與繪圖

通過編寫移動虛擬畫筆的代碼描畫一段路徑,這樣的路徑并不構(gòu)成一個圖形。繪制路徑意味著對路徑描邊或填充該路徑,也或者兩者都做。同樣,你應(yīng)該從某些繪圖程序中得到過相似的體會。

一段路徑是由點到點的描畫構(gòu)成。想象一下繪圖系統(tǒng)是你手里的一只畫筆,你首先必須要設(shè)置畫筆當前所處的位置,然后給出一系列命令告訴畫筆如何描畫隨后的每段路徑。每一段新增的路徑開始于當前點,當完成一條路徑的描畫,路徑的終點就變成了當前點。

下面列出了一些路徑描畫的命令:

定位當前點

CGContextMoveToPoint

描畫一條線

CGContextAddLineToPoint、CGContextAddLines

描畫一個矩形

CGContextAddRect、CGContextAddRects

描畫一個橢圓或圓形

CGContextAddEllipseInRect

描畫一段圓弧

CGContextAddArcToPoint、CGContextAddArc

通過一到兩個控制點描畫一段貝賽爾曲線

??? CGContextAddQuadCurveToPoint、CGContextAddCurveToPoint

關(guān)閉當前路徑

CGContextClosePath?這將從路徑的終點到起點追加一條線。如果你打算填充一段路徑,那么就不需要使用該命令,因為該命令會被自動調(diào)用。

描邊或填充當前路徑

CGContextStrokePath、CGContextFillPath、CGContextEOFillPath、CGContextDrawPath。對當前路徑描邊或填充會清除掉路徑。如果你只想使用一條命令完成描邊和填充任務(wù),可以使用CGContextDrawPath命令,因為如果你只是使用CGContextStrokePath對路徑描邊,路徑就會被清除掉,你就不能再對它進行填充了。

創(chuàng)建路徑并描邊路徑或填充路徑只需一條命令就可完成的函數(shù):CGContextStrokeLineSegments、CGContextStrokeRect、CGContextStrokeRectWithWidth、CGContextFillRect、CGContextFillRects、CGContextStrokeEllipseInRect、CGContextFillEllipseInRect。

一段路徑是被合成的,意思是它是由多條獨立的路徑組成。舉個例子,一條單獨的路徑可能由兩個獨立的閉合形狀組成:一個矩形和一個圓形。當你在構(gòu)造一條路徑的中間過程(意思是在描畫了一條路徑后沒有調(diào)用描邊或填充命令,或調(diào)用CGContextBeginPath函數(shù)來清除路徑)調(diào)用CGContextMoveToPoint函數(shù),就像是你拾起畫筆,并將畫筆移動到一個新的位置,如此來準備開始一段獨立的相同路徑。如果你擔心當你開始描畫一條路徑的時候,已經(jīng)存在的路徑和新的路徑會被認為是已存在路徑的一個合成部分,你可以調(diào)用CGContextBeginPath函數(shù)指定你繪制的路徑是一條獨立的路徑;蘋果的許多例子都是這樣做的,但在實際開發(fā)中我發(fā)現(xiàn)這是非必要的。

CGContextClearRect函數(shù)的功能是擦除一個區(qū)域。這個函數(shù)會擦除一個矩形內(nèi)的所有已存在的繪圖;并對該區(qū)域執(zhí)行裁剪。結(jié)果像是打了一個貫穿所有已存在繪圖的孔。

CGContextClearRect函數(shù)的行為依賴于上下文是透明還是不透明。當在圖形上下文中繪圖時,這會尤為明顯和直觀。如果圖片上下文是透明的(UIGraphicsBeginImageContextWithOptions第二個參數(shù)為NO),那么CGContextClearRect函數(shù)執(zhí)行擦除后的顏色為透明,反之則為黑色。

當在一個視圖中直接繪圖(使用drawRect:drawLayer:inContext:方法),如果視圖的背景顏色為nil或顏色哪怕有一點點透明度,那么CGContextClearRect的矩形區(qū)域?qū)@示為透明的,打出的孔將穿過視圖包括它的背景顏色。如果背景顏色完全不透明,那么CGContextClearRect函數(shù)的結(jié)果將會是黑色。這是因為視圖的背景顏色決定了是否視圖的圖形上下文是透明的還是不透明的。

圖5 CGContextClearRect函數(shù)的應(yīng)用

如圖5,在左邊的藍色正方形被挖去部分留為黑色,然而在右邊的藍色正方形也被挖去部分留為透明。但這兩個正方形都是UIView子類的實例,采用相同的繪圖代碼!不同之處在于視圖的背景顏色,左邊的正方形的背景顏色在nib文件中

但是這卻完全改變了CGContextClearRect函數(shù)的效果。UIView子類的drawRect:方法看起來像這樣:

CGContextRef con = UIGraphicsGetCurrentContext(); CGContextSetFillColorWithColor(con, [UIColor blueColor].CGColor); CGContextFillRect(con, rect); CGContextClearRect(con, CGRectMake(0,0,30,30));

為了說明典型路徑的描畫命令,我將生成一個向上的箭頭圖案,我謹慎避免使用便利函數(shù)操作,也許這不是創(chuàng)建箭頭最好的方式,但依然清楚的展示了各種典型命令的用法。

?

圖6 一個簡單的路徑繪圖

CGContextRef con = UIGraphicsGetCurrentContext(); // 繪制一個黑色的垂直黑色線,作為箭頭的桿子 CGContextMoveToPoint(con, 100, 100); CGContextAddLineToPoint(con, 100, 19); CGContextSetLineWidth(con, 20); CGContextStrokePath(con); // 繪制一個紅色三角形箭頭 CGContextSetFillColorWithColor(con, [[UIColor redColor] CGColor]); CGContextMoveToPoint(con, 80, 25); CGContextAddLineToPoint(con, 100, 0); CGContextAddLineToPoint(con, 120, 25); CGContextFillPath(con); // 從箭頭桿子上裁掉一個三角形,使用清除混合模式 CGContextMoveToPoint(con, 90, 101); CGContextAddLineToPoint(con, 100, 90); CGContextAddLineToPoint(con, 110, 101); CGContextSetBlendMode(con, kCGBlendModeClear); CGContextFillPath(con);

  確切的說,為了以防萬一,我們應(yīng)該在繪圖代碼周圍使用CGContextSaveGStateCGContextRestoreGState函數(shù)。可對于這個例子來說,添加與否不會有任何的區(qū)別。因為上下文在調(diào)用drawRect:方法中不會被持久,所以不會被破壞。

  如果一段路徑需要重用或共享,你可以將路徑封裝為CGPath(具體類型是CGPathRef)。你可以創(chuàng)建一個新的CGMutablePathRef對象并使用多個類似于圖形的路徑函數(shù)的CGPath函數(shù)構(gòu)造路徑,或者使用CGContextCopyPath函數(shù)復(fù)制圖形上下文的當前路徑。有許多CGPath函數(shù)可用于創(chuàng)建基于簡單幾何形狀的路徑(CGPathCreateWithRect、CGPathCreateWithEllipseInRect)或基于已存在路徑(CGPathCreateCopyByStrokingPath、CGPathCreateCopyDashingPath、CGPathCreateCopyByTransformingPath)。

  UIKit的UIBezierPath類包裝了CGPath。它提供了用于繪制某種形狀路徑的方法,以及用于描邊、填充、存取某些當前上下文狀態(tài)的設(shè)置方法。類似地,UIColor提供了用于設(shè)置當前上下文描邊與填充的顏色。因此我們可以重寫我們之前繪制箭頭的代碼:

UIBezierPath* p = [UIBezierPath bezierPath]; [p moveToPoint:CGPointMake(100,100)]; [p addLineToPoint:CGPointMake(100, 19)]; [p setLineWidth:20]; [p stroke]; [[UIColor redColor] set]; [p removeAllPoints]; [p moveToPoint:CGPointMake(80,25)]; [p addLineToPoint:CGPointMake(100, 0)]; [p addLineToPoint:CGPointMake(120, 25)]; [p fill]; [p removeAllPoints]; [p moveToPoint:CGPointMake(90,101)]; [p addLineToPoint:CGPointMake(100, 90)]; [p addLineToPoint:CGPointMake(110, 101)]; [p fillWithBlendMode:kCGBlendModeClear alpha:1.0];

  在這種特殊情況下,完成同樣的工作并沒有節(jié)省多少代碼,但是UIBezierPath仍然還是有用的。如果你需要對象特性,UIBezierPath提供了一個便利方法:bezierPathWithRoundedRect:cornerRadius:,它可用于繪制帶有圓角的矩形,如果是使用Core Graphics就相當冗長乏味了。還可以只讓圓角出現(xiàn)在左上角和右上角。

- (void)drawRect:(CGRect)rect {CGContextRef ctx = UIGraphicsGetCurrentContext();CGContextSetStrokeColorWithColor(ctx, [UIColor blackColor].CGColor);CGContextSetLineWidth(ctx, 3);UIBezierPath *path;path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(100, 100, 100, 100)byRoundingCorners:(UIRectCornerTopLeft |UIRectCornerTopRight)cornerRadii:CGSizeMake(10, 10)];[path stroke]; }

圖7 左右圓角矩形

  裁剪

  路徑的另一用處是遮蔽區(qū)域,以防對遮蔽區(qū)域進一步繪圖。這種用法被稱為裁剪。裁剪區(qū)域外的圖形不會被繪制到。默認情況下,一個圖形上下文的裁剪區(qū)域是整個圖形上下文。你可在上下文中的任何地方繪圖。

  總的來說,裁剪區(qū)域是上下文的一個特性。與已存在的裁剪區(qū)域相交會出現(xiàn)新的裁剪區(qū)域。所以如果你應(yīng)用了你自己的裁剪區(qū)域,稍后將它從圖形上下文中移除的做法是使用CGContextSaveGStateCGContextRestoreGState函數(shù)將代碼包裝起來。

??? 為了便于說明這一點,我使用裁剪而不是使用混合模式在箭頭桿子上打孔的方法重寫了生成箭頭的代碼。這樣做有點小復(fù)雜,因為我們想要裁剪區(qū)域不在三角形內(nèi)而在三角形外部。為了表明這一點,我們使用了一個三角形和一個矩形組成了一個組合路徑。

??? 當填充一個組合路徑并使用它表示一個裁剪區(qū)域時,系統(tǒng)遵循以下兩規(guī)則之一:

  環(huán)繞規(guī)則(Winding rule)

  如果邊界是順時針繪制,那么在其內(nèi)部逆時針繪制的邊界所包含的內(nèi)容為空。如果邊界是逆時針繪制,那么在其內(nèi)部順時針繪制的邊界所包含的內(nèi)容為空。

  奇偶規(guī)則

  最外層的邊界代表內(nèi)部都有效,都要填充;之后向內(nèi)第二個邊界代表它的內(nèi)部無效,不需填充;如此規(guī)則繼續(xù)向內(nèi)尋找邊界線。我們的情況非常簡單,所以使用奇偶規(guī)則就很容易了。這里我們使用CGContextEOCllip設(shè)置裁剪區(qū)域然后進行繪圖。(如果不是很明白,可以參見這篇文章:五種方法繪制有孔的2d形狀)

CGContextRef con = UIGraphicsGetCurrentContext(); // 在上下文裁剪區(qū)域中挖一個三角形狀的孔 CGContextMoveToPoint(con, 90, 100); CGContextAddLineToPoint(con, 100, 90); CGContextAddLineToPoint(con, 110, 100); CGContextClosePath(con); CGContextAddRect(con, CGContextGetClipBoundingBox(con)); // 使用奇偶規(guī)則,裁剪區(qū)域為矩形減去三角形區(qū)域 CGContextEOClip(con); // 繪制垂線 CGContextMoveToPoint(con, 100, 100); CGContextAddLineToPoint(con, 100, 19); CGContextSetLineWidth(con, 20); CGContextStrokePath(con); // 畫紅色箭頭 CGContextSetFillColorWithColor(con, [[UIColor redColor] CGColor]); CGContextMoveToPoint(con, 80, 25); CGContextAddLineToPoint(con, 100, 0); CGContextAddLineToPoint(con, 120, 25); CGContextFillPath(con);

  漸變

  漸變可以很簡單也可以很復(fù)雜。一個簡單的漸變(接下來要討論的)由一端點的顏色與另一端點的顏色決定,如果在中間點加入顏色(可選),那么漸變會在上下文的兩個點之間線性的繪制或在上下文的兩個圓之間放射狀的繪制。不能使用漸變作為路徑的填充色,但可使用裁剪限制對路徑形狀的漸變。

  我重寫了繪制箭頭的代碼,箭桿使用了線性漸變。效果如圖7所示。

圖8 箭頭桿子漸變

CGContextRef con = UIGraphicsGetCurrentContext(); CGContextSaveGState(con); // 在上下文裁剪區(qū)域挖一個三角形孔 CGContextMoveToPoint(con, 90, 100); CGContextAddLineToPoint(con, 100, 90); CGContextAddLineToPoint(con, 110, 100); CGContextClosePath(con); CGContextAddRect(con, CGContextGetClipBoundingBox(con)); CGContextEOClip(con); //繪制一個垂線,讓它的輪廓形狀成為裁剪區(qū)域 CGContextMoveToPoint(con, 100, 100); CGContextAddLineToPoint(con, 100, 19); CGContextSetLineWidth(con, 20); // 使用路徑的描邊版本替換圖形上下文的路徑 CGContextReplacePathWithStrokedPath(con); // 對路徑的描邊版本實施裁剪 CGContextClip(con); // 繪制漸變 CGFloat locs[3] = { 0.0, 0.5, 1.0 }; CGFloat colors[12] = {0.3,0.3,0.3,0.8, // 開始顏色,透明灰0.0,0.0,0.0,1.0, // 中間顏色,黑色0.3,0.3,0.3,0.8 // 末尾顏色,透明灰 }; CGColorSpaceRef sp = CGColorSpaceCreateDeviceGray(); CGGradientRef grad = CGGradientCreateWithColorComponents (sp, colors, locs, 3); CGContextDrawLinearGradient(con, grad, CGPointMake(89,0), CGPointMake(111,0), 0); CGColorSpaceRelease(sp); CGGradientRelease(grad); CGContextRestoreGState(con); // 完成裁剪 // 繪制紅色箭頭 CGContextSetFillColorWithColor(con, [[UIColor redColor] CGColor]); CGContextMoveToPoint(con, 80, 25); CGContextAddLineToPoint(con, 100, 0); CGContextAddLineToPoint(con, 120, 25); CGContextFillPath(con);

  調(diào)用CGContextReplacePathWithStrokedPath函數(shù)假裝對當前路徑描邊,并使用當前線段寬度和與線段相關(guān)的上下文狀態(tài)設(shè)置。但接著創(chuàng)建的是描邊路徑外部的一個新的路徑。因此,相對于使用粗的線條,我們使用了一個矩形區(qū)域作為裁剪區(qū)域。

  雖然過程比較冗長但是非常的簡單;我們將漸變描述為一組在一端點(0.0)和另一端點(1.0)之間連續(xù)區(qū)上的位置,以及設(shè)置與每個位置相對應(yīng)的顏色。為了提亮邊緣的漸變,加深中間的漸變,我使用了三個位置,黑色點的位置是0.5。為了創(chuàng)建漸變,還需要提供一個顏色空間。最后,我創(chuàng)建出了該漸變,并對裁剪區(qū)域繪制線性漸變,最后釋放了顏色空間和漸變。

  顏色與模板

  在iOS中,CGColor表示顏色(具體類型為CGColorRef)。使用UIColor的colorWithCGColor:和CGColor方法可bridged cast到UIColor。

  在iOS中,模板表示為CGPattern(具體類型為CGPatternRef)。你可以創(chuàng)建一個模板并使用它進行描邊或填充。其過程是相當復(fù)雜的。作為一個非常簡單的例子,我將使用紅藍相間的三角形替換箭頭的三角形部分。現(xiàn)在移除下面行:

  CGContextSetFillColorWithColor(con, [UIColor redColor].CGColor));

  在被移除的地方填入下面代碼:

CGColorSpaceRef sp2 = CGColorSpaceCreatePattern(NULL); CGContextSetFillColorSpace (con, sp2); CGColorSpaceRelease (sp2); CGPatternCallbacks callback = {0, &drawStripes, NULL }; CGAffineTransform tr = CGAffineTransformIdentity; CGPatternRef patt = CGPatternCreate(NULL,CGRectMake(0,0,4,4), tr, 4, 4, kCGPatternTilingConstantSpacingMinimalDistortion, true, &callback); CGFloat alph = 1.0; CGContextSetFillPattern(con, patt, &alph); CGPatternRelease(patt);

  代碼非常冗長,但它卻是一個完整的樣板。現(xiàn)在我們從后往前分析代碼: 我們調(diào)用CGContextSetFillPattern不是設(shè)置填充顏色,我們設(shè)置的是填充的模板。函數(shù)的第三個參數(shù)是一個指向CGFloat的指針,所以我們事先設(shè)置CGFloat自身。第二個參數(shù)是一個CGPatternRef對象,所以我們需要事先創(chuàng)建CGPatternRef,并在最后釋放它。

  現(xiàn)在開始討論CGPatternCreate。一個模板是在一個矩形元中的繪圖。我們需要矩形元的尺寸(第二個參數(shù))以及矩形元原始點之間的間隙(第四和第五個參數(shù))。這這種情況下,矩形元是4*4的,每一個矩形元與它的周圍矩形元是緊密貼合的。我們需要提供一個應(yīng)用到矩形元的變換參數(shù)(第三個參數(shù));在這種情況下,我們不需要變換做什么工作,所以我們應(yīng)用了一個恒等變換。我們應(yīng)用了一個瓷磚規(guī)則(第六個參數(shù))。我們需要聲明的是顏色模板不是漏印(stencil)模板,所以參數(shù)值為true。并且我們需要提供一個指向回調(diào)函數(shù)的指針,回調(diào)函數(shù)的工作是向矩形元繪制模板。第八個參數(shù)是一個指向CGPatternCallbacks結(jié)構(gòu)體的指針。這個結(jié)構(gòu)體由數(shù)字0和兩個指向函數(shù)的指針構(gòu)成。第一個函數(shù)指針指向的函數(shù)當模板被繪制到矩形元中被調(diào)用,第二個函數(shù)指針指向的函數(shù)當模板被釋放后調(diào)用。第二個函數(shù)指針我們沒有指定,它的存在主要是為了內(nèi)存管理的需要。但在這個簡單的例子中,我們并不需要。

  在你使用顏色模板調(diào)用CGContextSetFillPattern函數(shù)之前,你需要設(shè)置將應(yīng)用到模板顏色空間的上下文填充顏色空間。如果你忽略這項工作,那么當你調(diào)用CGContextSetFillPattern函數(shù)時會發(fā)生錯誤。所以我們創(chuàng)建了顏色空間,設(shè)置它作為上下文的填充顏色空間,并在后面做了釋放。

  到這里我們?nèi)匀粵]有完成繪圖。因為我還沒有編寫向矩形元中繪圖的函數(shù)!繪圖函數(shù)地址被表示為&drawStripes。繪圖代碼如下所示:

void drawStripes (void *info, CGContextRef con) {// assume 4 x 4 cellCGContextSetFillColorWithColor(con, [[UIColor redColor] CGColor]);CGContextFillRect(con, CGRectMake(0,0,4,4));CGContextSetFillColorWithColor(con, [[UIColor blueColor] CGColor]);CGContextFillRect(con, CGRectMake(0,0,4,2)); }

圖9 模板填充

  如你所見,實際的模板繪圖代碼是非常簡單的。唯一的復(fù)雜點在于CGPatternCreate函數(shù)必須與模板繪圖函數(shù)的矩形元尺寸相同。我們知道矩形元的尺寸為4*4,所以我們用紅色填充它,并接著填充它的下半部分為綠色。當這些矩形元被水平垂直平鋪時,我們得到了如圖8所示的條紋圖案。

  注意,最后圖形上下文遺留下了一個不可取的狀態(tài),即填充顏色空間被設(shè)置為了一個模板顏色空間。如果稍后嘗試設(shè)置填充顏色為常規(guī)顏色,就會引起錯誤。通常的解決方案是,使用CGContextSaveGStateCGContextRestoreGState函數(shù)將代碼包起來。

  你可能觀察到圖8的平鋪效果并不與箭頭的三角形內(nèi)部相符合:最底部的似乎只平鋪了一半藍色。這是因為一個模板的定位并不關(guān)心你填充(描邊)的形狀,總的來說它只關(guān)心圖形上下文。我們可以調(diào)用CGContextSetPatternPhase函數(shù)改變模板的定位。

  圖形上下文變換

  就像UIView可以實現(xiàn)變換,同樣圖形上下文也具備這項功能。然而對圖形上下文應(yīng)用一個變換操作不會對已在圖形上下文上的繪圖產(chǎn)生什么影響,它只會影響到在上下文變換之后被繪制的圖形,并改變被映射到圖形上下文區(qū)域的坐標方式。一個圖形上下文變換被稱為CTM,意為“當前變換矩陣“(current transformation matrix)。

  完全利用圖形上下文的CTM來免于即使是簡單的計算操作是很常見的。你可以使用CGContextConcatCTM函數(shù)將當前變換乘上任何CGAffineTransform,還有一些便利函數(shù)可對當前變換應(yīng)用平移、縮放,旋轉(zhuǎn)變換。

  當你獲得上下文的時候,對圖形上下文的基本變換已經(jīng)設(shè)置好了;這就是系統(tǒng)能映射上下文繪圖坐標到屏幕坐標的原因。無論你對當前變換應(yīng)用了什么變換,基本變換變換依然有效并且繪圖繼續(xù)工作。通過將你的變換代碼封裝到CGContextSaveGState和CGContextRestoreGState函數(shù)調(diào)用中,對基本變換應(yīng)用的變換操作可以被還原。

  舉個例子,對于我們迄今為止使用代碼繪制的向上箭頭來說,已知的放置箭頭的方式僅僅只有一個位置:箭頭矩形框的左上角被硬編碼在坐標{80,0}。這樣代碼很難理解、靈活性差、且很難被重用。最明智的做法是通過將所有代碼中的x坐標值減去80,讓箭頭矩形框左上角在坐標{0,0}。事先應(yīng)用一個簡單的平移變換,很容易將箭頭畫在任何位置。為了映射坐標到箭頭的左上角,我們使用下面代碼:

CGContextTranslateCTM(con, 80, 0); //在坐標{0,0}處繪制箭頭

  旋轉(zhuǎn)變換特別的有用,它可以讓你在一個被旋轉(zhuǎn)的方向上進行繪制而無需使用任何復(fù)雜的三角函數(shù)。然而這略有點復(fù)雜,因為旋轉(zhuǎn)變換圍繞的點是原點坐標。這幾乎不是你所想要的,所以你先是應(yīng)用了一個平移變換,為的是映射原點到你真正想繞其旋轉(zhuǎn)的點。但是接著,在旋轉(zhuǎn)之后,為了算出你在哪里繪圖,你可能需要做一次逆向平移變換。

  為了說明這個做法,我將繞箭頭桿子尾部旋轉(zhuǎn)多個角度重復(fù)繪制箭頭,并把對箭頭的繪圖封裝為UIImage對象。接著我們簡單重復(fù)繪制UIImage對象。

  具體代碼如下:

- (void)drawRect:(CGRect)rect {UIGraphicsBeginImageContextWithOptions(CGSizeMake(40,100), NO, 0.0);CGContextRef con = UIGraphicsGetCurrentContext();CGContextSaveGState(con);CGContextMoveToPoint(con, 90 - 80, 100);CGContextAddLineToPoint(con, 100 - 80, 90);CGContextAddLineToPoint(con, 110 - 80, 100);CGContextMoveToPoint(con, 110 - 80, 100);CGContextAddLineToPoint(con, 100 - 80, 90);CGContextAddLineToPoint(con, 90 - 80, 100);CGContextClosePath(con);CGContextAddRect(con, CGContextGetClipBoundingBox(con));CGContextEOClip(con);CGContextMoveToPoint(con, 100 - 80, 100);CGContextAddLineToPoint(con, 100 - 80, 19);CGContextSetLineWidth(con, 20);CGContextReplacePathWithStrokedPath(con);CGContextClip(con);CGFloat locs[3] = { 0.0, 0.5, 1.0 };CGFloat colors[12] = {0.3,0.3,0.3,0.8,0.0,0.0,0.0,1.0,0.3,0.3,0.3,0.8};CGColorSpaceRef sp = CGColorSpaceCreateDeviceGray();CGGradientRef grad = CGGradientCreateWithColorComponents (sp, colors, locs, 3);CGContextDrawLinearGradient (con, grad, CGPointMake(89 - 80,0), CGPointMake(111 - 80,0), 0);CGColorSpaceRelease(sp);CGGradientRelease(grad);CGContextRestoreGState(con);CGColorSpaceRef sp2 = CGColorSpaceCreatePattern(NULL);CGContextSetFillColorSpace (con, sp2);CGColorSpaceRelease (sp2);CGPatternCallbacks callback = {0, &drawStripes, NULL };CGAffineTransform tr = CGAffineTransformIdentity;CGPatternRef patt = CGPatternCreate(NULL,CGRectMake(0,0,4,4),tr,4,4,kCGPatternTilingConstantSpacingMinimalDistortion,true,&callback);CGFloat alph = 1.0;CGContextSetFillPattern(con, patt, &alph);CGPatternRelease(patt);CGContextMoveToPoint(con, 80 - 80, 25);CGContextAddLineToPoint(con, 100 - 80, 0);CGContextAddLineToPoint(con, 120 - 80, 25);CGContextFillPath(con);UIImage* im = UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();con = UIGraphicsGetCurrentContext();[im drawAtPoint:CGPointMake(0,0)];for (int i=0; i<3; i++) {CGContextTranslateCTM(con, 20, 100);CGContextRotateCTM(con, 30 * M_PI/180.0);CGContextTranslateCTM(con, -20, -100);[im drawAtPoint:CGPointMake(0,0)];} }

圖10 使用CTM旋轉(zhuǎn)變換

  變換有多個方法解決我們早期使用CGContextDrawImage函數(shù)遇到的倒置問題。相對于逆向繪圖,我們選擇逆向我們繪圖的上下文。實質(zhì)上,我們對上下文坐標系統(tǒng)應(yīng)用了一個“倒置”變換。你自上而下移動上下文,接著你通過應(yīng)用一個讓y坐標乘以-1的縮放變換逆向y坐標的方向。

CGContextTranslateCTM(con, 0, theHeight); CGContextScaleCTM(con, 1.0, -1.0);

???? 上下文的頂部應(yīng)該被你往下移動多遠依賴于你繪制的圖片。比如說我們可以繪制沒有倒置問題的兩個半邊的火星圖形(前面討論的一個例子)。

CGContextTranslateCTM(con, 0, sz.height); // sz為[mars size]CGContextScaleCTM(con, 1.0, -1.0); CGContextDrawImage(con,CGRectMake(0,0,sz.width/2.0,sz.height),marsLeft); CGContextDrawImage(con,CGRectMake(b.size.width-sz.width/2.0,0,sz.width/2.0,sz.height),marsRight);

  陰影

  為了在繪圖上加入陰影,可在繪圖之前設(shè)置上下文的陰影值。陰影的位置表示為CGSize,如果CGSize的兩個值都是正數(shù),則表示陰影是朝下和朝右的。模糊度被表示為任何一個正數(shù)。蘋果沒有解釋縮放的工作方式,但實驗表明12是最佳的模糊度,99及以上的模糊度會讓陰影變得不成形。

??? 我在圖9的基礎(chǔ)上給上下文加了一個陰影:

~~~~~~~~~~~~ con = UIGraphicsGetCurrentContext(); CGContextSetShadow(con, CGSizeMake(7, 7), 12); [im drawAtPoint:CGPointMake(0,0)]; ~~~~~~~~~~~~~~~

  然而,使用這種方法有一個不太明顯的問題。我們是在每繪制一個箭頭的時候加上的陰影。因此,箭頭的陰影會投射在另一個箭頭上面。我們想要的是讓所有的箭頭集體地投射出一個陰影。解決方法是使用一個透明的圖層;該圖層類似一個先是疊加所有繪圖然后加上陰影的一個子上下文。代碼如下:

con = UIGraphicsGetCurrentContext(); CGContextSetShadow(con, CGSizeMake(7, 7), 12); CGContextBeginTransparencyLayer(con, NULL);[im drawAtPoint:CGPointMake(0,0)];for (int i=0; i<3; i++) {CGContextTranslateCTM(con, 20, 100);CGContextRotateCTM(con, 30 * M_PI/180.0);CGContextTranslateCTM(con, -20, -100);[im drawAtPoint:CGPointMake(0,0)];} // 在調(diào)用了CGContextEndTransparencyLayer函數(shù)之后, // 圖層內(nèi)容會在應(yīng)用全局alpha和上下文陰影狀態(tài)之后被合成到上下文中 CGContextEndTransparencyLayer(con); }

圖11 陰影效果

  點與像素

  一個點是由xy坐標描述的一個無窮小量的位置。通過指定點實現(xiàn)在圖形上下文中的繪圖。我們并沒有關(guān)心設(shè)備的分辨率,因為Core Graphics已經(jīng)精細地將繪圖映射到物理輸出設(shè)備(基于CTM、反鋸齒和平滑技術(shù))。因此,文章之前的討論只關(guān)心圖形上下文的點,不關(guān)注點與屏幕像素的關(guān)系。

  然而像素是真實存在的。一個像素是真實世界中一個具有完整物理尺寸的顯示單元。整數(shù)的點實際上介于像素之間。在單分辨率設(shè)備上,這可能會讓人感到迷惑。比方說,如果使用線寬為1的線條對一個整數(shù)坐標的垂直路徑描邊,那么線條將會被分為兩半,分別落在路徑的兩側(cè)。所以在單分辨率設(shè)備上線寬會變成2px(因為設(shè)備無法表示半個像素)。

?

圖12 整數(shù)的點坐標與偏移0.5點的坐標對應(yīng)的描邊處理

  當你遇到顯示效果不佳的時,可能會被建議通過對坐標增減0.5讓它在像素中居中。這個建議可能有效,如圖11。但它只是做了一些頭腦簡單的假設(shè)。一個復(fù)雜的做法是獲得UIView的contentScaleFactor屬性。這個值為1.0或2.0,所以你可以除以這個屬性值得到從像素到點的轉(zhuǎn)換。還可以想想用最精確的方式繪制一條水平或垂直的線條的方式不是描邊路徑,而是填充路徑。使用這種方法UIView的子類代碼將可以在任何設(shè)備上繪制一條完美的1px寬的垂線,代碼如下:

CGContextFillRect(con, CGRectMake(100,0,1.0/self.contentScaleFactor,100));

  內(nèi)容模式

  一個視圖向它自身繪圖,相對于只有背景顏色和子視圖,它還有內(nèi)容。這意味著每當視圖被調(diào)整大小它的contentMode屬性就變得非常重要。正如我之前提到的,繪圖系統(tǒng)會盡可能避免重頭開始繪制視圖。相反,繪圖系統(tǒng)將使用之前繪圖操作的緩存結(jié)果(位圖回填)。所以,如果視圖被重新調(diào)整大小,系統(tǒng)可能簡單的伸縮或重定位緩存繪圖,前提是你的contentMode設(shè)置指令是是這樣設(shè)置的。

  說明這一點略有點復(fù)雜。因為我需要安排調(diào)整視圖大小而不引起重繪操作(調(diào)用drawRect:方法)。當程序啟動時,我將創(chuàng)建一個MyView實例,并將它放在window上。接著將執(zhí)行調(diào)整MyView尺寸的操作延遲到window出現(xiàn)和界面初次顯示之后:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.window.rootViewController = [UIViewController new]; MyView* mv =[[MyView alloc] initWithFrame:CGRectMake(0, 0, self.window.bounds.size.width - 50, 150)]; mv.center = self.window.center; [self.window.rootViewController.view addSubview: mv]; mv.opaque = NO; mv.tag = 111; // so I can get a reference to this view later [self performSelector:@selector(resize:) withObject:nil afterDelay:0.1]; self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; return YES; }- (void) resize: (id) dummy { UIView* mv = [self.window viewWithTag:111]; CGRect f = mv.bounds; f.size.height *= 2; mv.bounds = f; }

  我們將視圖的高度調(diào)成之前的2倍。沒有觸發(fā)drawRect:方法的調(diào)用。如果我們視圖的drawRect:方法代碼和生成圖9的代碼相同,則我們得到如圖12的結(jié)果,視圖被顯示在正確高度上。

?

圖13 內(nèi)容自動伸展

  可是早晚drawRect:方法會被調(diào)用,繪圖將按照drawRect:方法中的代碼被刷新。代碼不會將箭頭繪制在相對于視圖邊界的高度。它是在一個固定的高度。因此箭頭會伸展,而且會在以后某個時間返回到原始的尺寸。

  通常我們的視圖的contentMode屬性需要與視圖繪制自己的方式一致。假設(shè)我們的drawRect:方法中的代碼讓箭頭的尺寸和位置相對于視圖的邊界原點,即它的左上方。所以我們可以設(shè)置它的contentModeUIViewContentModeTopLeft。又或者,我們可以將contentMode設(shè)置為UIVIewContentModeRedraw,這將引起緩存內(nèi)容的自動縮放和重定位被關(guān)閉,最終結(jié)果是視圖的setNeedsDisplay方法將被調(diào)用,觸發(fā)drawRect:方法重繪視圖內(nèi)容。

  在另一方面,如果一個視圖只是暫時被調(diào)整大小。假設(shè)是作為動畫的一部分,那么伸縮行為正是你所想要的。假設(shè)我們的動畫是想要讓視圖變大然后還原回原始大小以達到作為吸引用戶的一種手段。這就需要視圖伸縮的時候視圖的內(nèi)容也跟著伸縮,正確的contentMode的值是UIViewContentModeScaleToFill,被伸縮的內(nèi)容僅僅是視圖內(nèi)容的一副緩存圖片,所以它運行起來十分的高效。

  完。

  本文由海水的味道翻譯,轉(zhuǎn)載請注明譯者和出處,請勿用于商業(yè)用途!

  ??譯者說明:譯文中的錯誤或不當之處望不吝指出,這也是我堅持翻譯工作的最大動力。

  Drop me a line:?xdreamarshal@gmail.com,?http://weibo.com/xdream86

via:http://www.cnblogs.com/xdream86/archive/2012/12/12/2814552.html

關(guān)鍵字: object-c & ios, 精品收錄

該文章由 hank 整理于 2013 年 3 月 13 日

文章末尾有"VIA"字樣或標明"來源地址"為轉(zhuǎn)載內(nèi)容,版權(quán)歸原作者所有,轉(zhuǎn)載請保留說明。否則為本站原創(chuàng)內(nèi)容,請注明轉(zhuǎn)載自: 程序員速查手冊

總結(jié)

以上是生活随笔為你收集整理的iOS绘图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

亚洲欧美综合区丁香五月小说 | 乱码午夜-极国产极内射 | 亚洲а∨天堂久久精品2021 | 亚洲成av人影院在线观看 | 麻豆果冻传媒2021精品传媒一区下载 | www国产亚洲精品久久久日本 | 国产精品第一国产精品 | 少妇的肉体aa片免费 | 无码精品国产va在线观看dvd | 精品一区二区三区波多野结衣 | 成人无码视频在线观看网站 | 激情内射日本一区二区三区 | 亚洲一区二区三区在线观看网站 | 国产成人无码av在线影院 | 露脸叫床粗话东北少妇 | 国内精品一区二区三区不卡 | 日韩 欧美 动漫 国产 制服 | 国产亚洲精品久久久久久 | 国产午夜视频在线观看 | 亚洲精品国产a久久久久久 | 婷婷丁香五月天综合东京热 | 成人一区二区免费视频 | 伊人久久大香线蕉av一区二区 | 日本一区二区三区免费高清 | 精品国产aⅴ无码一区二区 | 少妇愉情理伦片bd | 日本成熟视频免费视频 | 99精品视频在线观看免费 | 国产网红无码精品视频 | 亚洲精品一区二区三区婷婷月 | 日本在线高清不卡免费播放 | 国产手机在线αⅴ片无码观看 | 日本xxxx色视频在线观看免费 | 久久午夜夜伦鲁鲁片无码免费 | 欧美日韩视频无码一区二区三 | 欧美人与牲动交xxxx | 日本www一道久久久免费榴莲 | 日本大乳高潮视频在线观看 | 国产真实乱对白精彩久久 | √天堂资源地址中文在线 | 婷婷六月久久综合丁香 | 久久久久成人精品免费播放动漫 | 亚洲精品久久久久久一区二区 | 亚洲人成网站免费播放 | 亚洲成av人片在线观看无码不卡 | 中文无码伦av中文字幕 | 99久久99久久免费精品蜜桃 | 亚洲色欲色欲天天天www | 伊人久久婷婷五月综合97色 | 久久精品99久久香蕉国产色戒 | √天堂中文官网8在线 | 国产午夜亚洲精品不卡下载 | 欧洲熟妇色 欧美 | 免费观看又污又黄的网站 | 老子影院午夜伦不卡 | 熟女少妇在线视频播放 | 日本乱人伦片中文三区 | 亚洲国产日韩a在线播放 | 风流少妇按摩来高潮 | 日本大乳高潮视频在线观看 | 精品乱码久久久久久久 | 窝窝午夜理论片影院 | 成人无码影片精品久久久 | 麻豆精产国品 | 少妇一晚三次一区二区三区 | 亚洲精品一区二区三区在线观看 | 成人一区二区免费视频 | 天干天干啦夜天干天2017 | 国产亚洲精品久久久闺蜜 | 成人片黄网站色大片免费观看 | 成人女人看片免费视频放人 | 国产麻豆精品精东影业av网站 | 国产国产精品人在线视 | 国产97在线 | 亚洲 | 一本久道久久综合婷婷五月 | 亚洲国产精品无码一区二区三区 | 亚洲一区二区三区在线观看网站 | 特黄特色大片免费播放器图片 | 人妻尝试又大又粗久久 | 大乳丰满人妻中文字幕日本 | 亚洲综合无码久久精品综合 | 奇米影视7777久久精品 | 色婷婷久久一区二区三区麻豆 | 亚洲人亚洲人成电影网站色 | 亚洲第一无码av无码专区 | 精品少妇爆乳无码av无码专区 | 理论片87福利理论电影 | 国产精品99爱免费视频 | 国产又爽又黄又刺激的视频 | 欧美性黑人极品hd | 99久久精品午夜一区二区 | 内射老妇bbwx0c0ck | 欧美精品免费观看二区 | 无码精品人妻一区二区三区av | 国产精品久久久久久亚洲毛片 | 久久久精品欧美一区二区免费 | 亚洲小说图区综合在线 | 久久五月精品中文字幕 | 四虎影视成人永久免费观看视频 | 国产熟妇高潮叫床视频播放 | 丰满肥臀大屁股熟妇激情视频 | 久久精品中文字幕大胸 | 色五月丁香五月综合五月 | 精品久久久久香蕉网 | 国产欧美精品一区二区三区 | 在线播放无码字幕亚洲 | 亚洲 日韩 欧美 成人 在线观看 | 丰满少妇弄高潮了www | 人妻无码αv中文字幕久久琪琪布 | 天堂一区人妻无码 | 樱花草在线播放免费中文 | 99久久婷婷国产综合精品青草免费 | 亚洲国产精品一区二区第一页 | 亚洲狠狠婷婷综合久久 | 无套内射视频囯产 | 久久亚洲中文字幕无码 | 无码国产激情在线观看 | 在线精品亚洲一区二区 | 色五月五月丁香亚洲综合网 | 无码乱肉视频免费大全合集 | 装睡被陌生人摸出水好爽 | 无码午夜成人1000部免费视频 | 熟妇人妻无乱码中文字幕 | 久久精品视频在线看15 | 夜夜夜高潮夜夜爽夜夜爰爰 | 免费无码一区二区三区蜜桃大 | 欧美国产日韩亚洲中文 | 国产午夜无码视频在线观看 | 久久久国产一区二区三区 | 国产97人人超碰caoprom | 全球成人中文在线 | 久久国语露脸国产精品电影 | 亚洲国产欧美在线成人 | 亚洲综合精品香蕉久久网 | 波多野结衣av一区二区全免费观看 | 亚洲国产精品久久久久久 | 久久久中文字幕日本无吗 | 亚洲 a v无 码免 费 成 人 a v | 99久久久无码国产aaa精品 | 婷婷综合久久中文字幕蜜桃三电影 | 国产香蕉尹人综合在线观看 | 中文无码成人免费视频在线观看 | 久久人人爽人人爽人人片ⅴ | 九一九色国产 | 欧美喷潮久久久xxxxx | 国产在线精品一区二区三区直播 | 大胆欧美熟妇xx | 玩弄少妇高潮ⅹxxxyw | 97久久精品无码一区二区 | 377p欧洲日本亚洲大胆 | 强奷人妻日本中文字幕 | 国语自产偷拍精品视频偷 | 久久精品无码一区二区三区 | 鲁鲁鲁爽爽爽在线视频观看 | 精品一区二区三区波多野结衣 | 亚洲中文无码av永久不收费 | 在线欧美精品一区二区三区 | 日日天日日夜日日摸 | 在线精品国产一区二区三区 | 无码人妻av免费一区二区三区 | 国产午夜亚洲精品不卡 | 图片区 小说区 区 亚洲五月 | 午夜时刻免费入口 | 99久久精品国产一区二区蜜芽 | 久久无码人妻影院 | 麻豆av传媒蜜桃天美传媒 | 爆乳一区二区三区无码 | 国产无遮挡又黄又爽免费视频 | 亚洲中文无码av永久不收费 | 漂亮人妻洗澡被公强 日日躁 | 免费国产黄网站在线观看 | 人妻有码中文字幕在线 | 国产情侣作爱视频免费观看 | 国内综合精品午夜久久资源 | 精品亚洲成av人在线观看 | 国产成人无码av在线影院 | 精品成人av一区二区三区 | 国模大胆一区二区三区 | 又紧又大又爽精品一区二区 | 国内丰满熟女出轨videos | 亚洲精品一区二区三区大桥未久 | 综合网日日天干夜夜久久 | 国产偷自视频区视频 | 精品厕所偷拍各类美女tp嘘嘘 | 日本一本二本三区免费 | av香港经典三级级 在线 | 国产乡下妇女做爰 | 性史性农村dvd毛片 | 一本无码人妻在中文字幕免费 | 国产精品对白交换视频 | 日韩 欧美 动漫 国产 制服 | 四虎国产精品免费久久 | 亚洲色偷偷偷综合网 | 性做久久久久久久久 | 久久精品女人的天堂av | 久久亚洲精品中文字幕无男同 | 夜精品a片一区二区三区无码白浆 | 高清国产亚洲精品自在久久 | aa片在线观看视频在线播放 | 思思久久99热只有频精品66 | 天堂亚洲2017在线观看 | 久久综合香蕉国产蜜臀av | 亚洲 a v无 码免 费 成 人 a v | 久在线观看福利视频 | 欧美 亚洲 国产 另类 | 国产sm调教视频在线观看 | 国产人妻精品一区二区三区 | 国产一区二区不卡老阿姨 | 在线亚洲高清揄拍自拍一品区 | 76少妇精品导航 | 亚洲精品欧美二区三区中文字幕 | 色婷婷香蕉在线一区二区 | 在线观看国产午夜福利片 | 欧美兽交xxxx×视频 | 色婷婷久久一区二区三区麻豆 | 国语自产偷拍精品视频偷 | 中文字幕乱妇无码av在线 | 久久精品女人的天堂av | 97色伦图片97综合影院 | 精品无码一区二区三区爱欲 | 日本丰满熟妇videos | 日本熟妇人妻xxxxx人hd | 亚洲区欧美区综合区自拍区 | 国产两女互慰高潮视频在线观看 | 无码人中文字幕 | 国产真人无遮挡作爱免费视频 | 精品人妻人人做人人爽夜夜爽 | 亚洲日本在线电影 | 午夜熟女插插xx免费视频 | 性史性农村dvd毛片 | 麻花豆传媒剧国产免费mv在线 | 精品无码一区二区三区爱欲 | 亚洲日韩乱码中文无码蜜桃臀网站 | 特大黑人娇小亚洲女 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 乱码午夜-极国产极内射 | 日本一本二本三区免费 | 亚洲国产午夜精品理论片 | 精品厕所偷拍各类美女tp嘘嘘 | 女人被爽到呻吟gif动态图视看 | 久久久亚洲欧洲日产国码αv | 国内精品人妻无码久久久影院蜜桃 | 天堂а√在线中文在线 | 天堂无码人妻精品一区二区三区 | 国产麻豆精品精东影业av网站 | 扒开双腿吃奶呻吟做受视频 | 久久人人爽人人爽人人片av高清 | 无码人妻少妇伦在线电影 | 性色欲情网站iwww九文堂 | 久久久久久国产精品无码下载 | 亚洲国产精品毛片av不卡在线 | 又紧又大又爽精品一区二区 | 色五月五月丁香亚洲综合网 | 精品国产成人一区二区三区 | 麻豆md0077饥渴少妇 | 国产明星裸体无码xxxx视频 | 国产精品久久久av久久久 | 无码av免费一区二区三区试看 | 亚洲日韩中文字幕在线播放 | 日日摸日日碰夜夜爽av | 无码播放一区二区三区 | 亚洲熟妇色xxxxx欧美老妇 | 中文字幕乱码亚洲无线三区 | 亚洲一区二区观看播放 | 亚洲成a人片在线观看日本 | 伊人久久大香线蕉av一区二区 | 国产精品欧美成人 | 激情爆乳一区二区三区 | 国产香蕉尹人视频在线 | 久久无码人妻影院 | 久久久久免费看成人影片 | 人人爽人人澡人人人妻 | 午夜福利一区二区三区在线观看 | 欧美成人免费全部网站 | 超碰97人人做人人爱少妇 | 欧美怡红院免费全部视频 | 白嫩日本少妇做爰 | 国产精品久久福利网站 | 中文久久乱码一区二区 | 国产欧美熟妇另类久久久 | 精品国产av色一区二区深夜久久 | 丝袜美腿亚洲一区二区 | 麻豆精品国产精华精华液好用吗 | 日本www一道久久久免费榴莲 | 精品无码国产一区二区三区av | 国产精品99久久精品爆乳 | 狠狠亚洲超碰狼人久久 | 少妇愉情理伦片bd | 真人与拘做受免费视频 | 久久久久av无码免费网 | 国产精品久久久午夜夜伦鲁鲁 | 色五月丁香五月综合五月 | 国産精品久久久久久久 | 蜜桃av抽搐高潮一区二区 | 性生交大片免费看女人按摩摩 | 国产精品无码久久av | 精品国产国产综合精品 | 国产精品久久久久影院嫩草 | 99视频精品全部免费免费观看 | 欧美人与动性行为视频 | 亚洲国产一区二区三区在线观看 | 久久久久亚洲精品男人的天堂 | 色综合久久久无码中文字幕 | 一本久道高清无码视频 | 成人精品视频一区二区三区尤物 | 熟妇人妻无乱码中文字幕 | 久久久久亚洲精品男人的天堂 | 国产av无码专区亚洲a∨毛片 | 久久久久久国产精品无码下载 | 西西人体www44rt大胆高清 | 久久精品中文闷骚内射 | а√天堂www在线天堂小说 | 欧美人与禽zoz0性伦交 | 老熟妇仑乱视频一区二区 | 蜜桃臀无码内射一区二区三区 | 国产亚洲精品久久久久久久 | 扒开双腿疯狂进出爽爽爽视频 | 亚洲啪av永久无码精品放毛片 | 无码人妻出轨黑人中文字幕 | 精品无码av一区二区三区 | 欧美成人家庭影院 | 2019午夜福利不卡片在线 | 精品久久久无码人妻字幂 | 久久久亚洲欧洲日产国码αv | 在线a亚洲视频播放在线观看 | 欧美日本精品一区二区三区 | 亚洲一区二区三区偷拍女厕 | 精品亚洲成av人在线观看 | 少妇无码av无码专区在线观看 | 牲欲强的熟妇农村老妇女 | 老熟女乱子伦 | 天堂а√在线地址中文在线 | 乱人伦人妻中文字幕无码 | 国产精品人人爽人人做我的可爱 | 亚洲精品国产品国语在线观看 | 精品一区二区不卡无码av | 精品乱子伦一区二区三区 | 亚洲精品久久久久久一区二区 | 一个人看的视频www在线 | 一二三四在线观看免费视频 | 色综合天天综合狠狠爱 | 免费观看的无遮挡av | 青春草在线视频免费观看 | 亚洲国产精品久久久久久 | 国产在线aaa片一区二区99 | 亚洲日韩av一区二区三区四区 | 久久久婷婷五月亚洲97号色 | 日本在线高清不卡免费播放 | 亚洲成av人影院在线观看 | 国产精品igao视频网 | 中文字幕中文有码在线 | 国产亚洲精品久久久ai换 | 99麻豆久久久国产精品免费 | 88国产精品欧美一区二区三区 | 樱花草在线社区www | 女人色极品影院 | 日产国产精品亚洲系列 | 在线播放无码字幕亚洲 | 日韩欧美成人免费观看 | 无码av最新清无码专区吞精 | 男女下面进入的视频免费午夜 | 国产人妻久久精品二区三区老狼 | 思思久久99热只有频精品66 | 久久熟妇人妻午夜寂寞影院 | 亚洲 a v无 码免 费 成 人 a v | 国产成人无码av片在线观看不卡 | 图片小说视频一区二区 | 欧美精品国产综合久久 | 六月丁香婷婷色狠狠久久 | 国产成人精品无码播放 | 欧美精品免费观看二区 | 日产国产精品亚洲系列 | 久久精品女人天堂av免费观看 | 久久伊人色av天堂九九小黄鸭 | 亚洲gv猛男gv无码男同 | 中文字幕无线码免费人妻 | 乱人伦人妻中文字幕无码久久网 | 少妇人妻大乳在线视频 | 欧美亚洲国产一区二区三区 | 亚洲色成人中文字幕网站 | 久久人人爽人人爽人人片ⅴ | 99久久亚洲精品无码毛片 | 精品国产aⅴ无码一区二区 | 亚洲色无码一区二区三区 | 丁香花在线影院观看在线播放 | 18无码粉嫩小泬无套在线观看 | 国产亚洲精品久久久ai换 | 久久99精品国产麻豆 | 少妇高潮一区二区三区99 | 国产人妻久久精品二区三区老狼 | 娇妻被黑人粗大高潮白浆 | 成人精品天堂一区二区三区 | 国产成人久久精品流白浆 | 欧美日韩在线亚洲综合国产人 | 久久精品视频在线看15 | 免费视频欧美无人区码 | 欧美黑人性暴力猛交喷水 | 欧美性生交xxxxx久久久 | 四虎国产精品一区二区 | 国产精品国产自线拍免费软件 | 久久久久久av无码免费看大片 | 精品国偷自产在线视频 | 亚洲日韩中文字幕在线播放 | 国产亚洲视频中文字幕97精品 | 大肉大捧一进一出视频出来呀 | 人人妻人人澡人人爽人人精品 | 99久久无码一区人妻 | 国产黑色丝袜在线播放 | 十八禁真人啪啪免费网站 | 日本乱偷人妻中文字幕 | 波多野结衣av一区二区全免费观看 | 无码国产色欲xxxxx视频 | 大屁股大乳丰满人妻 | 欧美熟妇另类久久久久久不卡 | 国产精品第一国产精品 | 久久国产精品二国产精品 | 宝宝好涨水快流出来免费视频 | 久久无码中文字幕免费影院蜜桃 | 波多野结衣高清一区二区三区 | 国产极品美女高潮无套在线观看 | 亚洲国产精品一区二区第一页 | 婷婷六月久久综合丁香 | 中国大陆精品视频xxxx | 黑人玩弄人妻中文在线 | 欧美野外疯狂做受xxxx高潮 | 香港三级日本三级妇三级 | 国产av一区二区三区最新精品 | 四虎国产精品一区二区 | 午夜嘿嘿嘿影院 | 亚洲の无码国产の无码步美 | 扒开双腿吃奶呻吟做受视频 | 荫蒂添的好舒服视频囗交 | 久久精品国产亚洲精品 | 国产精品成人av在线观看 | 国产精品久久久 | 欧美freesex黑人又粗又大 | 男人的天堂2018无码 | 麻豆果冻传媒2021精品传媒一区下载 | 成人无码视频在线观看网站 | 国产午夜视频在线观看 | 亚洲欧美精品aaaaaa片 | 国产国语老龄妇女a片 | 国产av无码专区亚洲a∨毛片 | 大胆欧美熟妇xx | 国产97在线 | 亚洲 | 精品国产青草久久久久福利 | 欧美日韩精品 | 无码帝国www无码专区色综合 | 亚洲综合久久一区二区 | 国产午夜无码视频在线观看 | 国产情侣作爱视频免费观看 | 亚洲 激情 小说 另类 欧美 | 在线观看免费人成视频 | 沈阳熟女露脸对白视频 | 青青久在线视频免费观看 | 成人一区二区免费视频 | a片免费视频在线观看 | 精品一区二区三区无码免费视频 | 国产精品无码久久av | 亚洲国产精品久久久天堂 | 国产av剧情md精品麻豆 | 人人妻人人澡人人爽欧美一区 | 久久综合狠狠综合久久综合88 | 国产成人亚洲综合无码 | 国产av一区二区三区最新精品 | 88国产精品欧美一区二区三区 | 亚洲日韩中文字幕在线播放 | 久久精品人妻少妇一区二区三区 | 精品国精品国产自在久国产87 | 国产香蕉尹人视频在线 | 5858s亚洲色大成网站www | 无码av岛国片在线播放 | 精品无码一区二区三区的天堂 | 蜜桃视频插满18在线观看 | 亚洲精品国偷拍自产在线麻豆 | 亚洲综合久久一区二区 | a片在线免费观看 | 网友自拍区视频精品 | 乱中年女人伦av三区 | 国产精品福利视频导航 | 中国大陆精品视频xxxx | 成 人 免费观看网站 | 性生交大片免费看l | 99久久精品国产一区二区蜜芽 | 久久国产精品萌白酱免费 | 成人亚洲精品久久久久软件 | 成熟人妻av无码专区 | 大肉大捧一进一出视频出来呀 | 国产国语老龄妇女a片 | 日本一本二本三区免费 | 日韩人妻系列无码专区 | 人妻少妇被猛烈进入中文字幕 | 露脸叫床粗话东北少妇 | 2020最新国产自产精品 | 成在人线av无码免观看麻豆 | 97人妻精品一区二区三区 | 久久久久av无码免费网 | 亚洲区小说区激情区图片区 | 亚洲の无码国产の无码步美 | 一本色道久久综合亚洲精品不卡 | 日日噜噜噜噜夜夜爽亚洲精品 | 亚洲色大成网站www | 台湾无码一区二区 | 波多野结衣高清一区二区三区 | 亚洲精品美女久久久久久久 | 欧美 丝袜 自拍 制服 另类 | 日韩亚洲欧美精品综合 | 国产极品美女高潮无套在线观看 | 51国偷自产一区二区三区 | 人人爽人人澡人人高潮 | 少妇的肉体aa片免费 | 在线观看国产一区二区三区 | 国产绳艺sm调教室论坛 | 久久99国产综合精品 | 国产精品鲁鲁鲁 | 国产精品国产三级国产专播 | 久久精品国产精品国产精品污 | а√资源新版在线天堂 | 蜜桃视频插满18在线观看 | 蜜臀av无码人妻精品 | 色综合久久中文娱乐网 | 免费无码一区二区三区蜜桃大 | 波多野42部无码喷潮在线 | 婷婷五月综合激情中文字幕 | 成年美女黄网站色大免费视频 | 精品无码成人片一区二区98 | 免费无码一区二区三区蜜桃大 | 最新版天堂资源中文官网 | 国产精品久久久久久亚洲影视内衣 | 成人亚洲精品久久久久 | 亚洲色欲久久久综合网东京热 | 精品少妇爆乳无码av无码专区 | 亚洲国产综合无码一区 | 乱人伦人妻中文字幕无码 | 激情五月综合色婷婷一区二区 | 丰满妇女强制高潮18xxxx | 性色欲情网站iwww九文堂 | 精品无人国产偷自产在线 | 婷婷五月综合激情中文字幕 | 窝窝午夜理论片影院 | 亚洲精品国产品国语在线观看 | 搡女人真爽免费视频大全 | 精品国精品国产自在久国产87 | 西西人体www44rt大胆高清 | 丰满少妇高潮惨叫视频 | 亚洲乱码国产乱码精品精 | 夜先锋av资源网站 | 人妻与老人中文字幕 | 麻豆md0077饥渴少妇 | 国产精品丝袜黑色高跟鞋 | 亚洲色欲久久久综合网东京热 | 国产一区二区三区影院 | 人妻少妇精品无码专区二区 | 国产乱码精品一品二品 | 久久无码人妻影院 | 天干天干啦夜天干天2017 | 人妻互换免费中文字幕 | 一本一道久久综合久久 | 中国女人内谢69xxxxxa片 | 欧美 丝袜 自拍 制服 另类 | 久久国产精品偷任你爽任你 | 久久zyz资源站无码中文动漫 | 久久久久久亚洲精品a片成人 | 国产热a欧美热a在线视频 | 久久久婷婷五月亚洲97号色 | 2020久久超碰国产精品最新 | 久久午夜无码鲁丝片 | 亚洲色大成网站www | 99久久人妻精品免费一区 | 国产亚洲精品久久久ai换 | 国产精品亚洲а∨无码播放麻豆 | 一本色道久久综合亚洲精品不卡 | 欧美熟妇另类久久久久久不卡 | 思思久久99热只有频精品66 | 精品国精品国产自在久国产87 | 亚洲人成人无码网www国产 | 久久综合狠狠综合久久综合88 | 国产手机在线αⅴ片无码观看 | 国产另类ts人妖一区二区 | 日韩av无码中文无码电影 | 久久久精品人妻久久影视 | av无码电影一区二区三区 | 精品成人av一区二区三区 | 国产熟妇高潮叫床视频播放 | 国产色精品久久人妻 | 日韩精品无码一本二本三本色 | 国产激情艳情在线看视频 | 国产人妻久久精品二区三区老狼 | 国产熟女一区二区三区四区五区 | 欧美自拍另类欧美综合图片区 | 青青青手机频在线观看 | 丁香花在线影院观看在线播放 | 国产精品理论片在线观看 | 老熟女乱子伦 | 国内老熟妇对白xxxxhd | 乱码av麻豆丝袜熟女系列 | 国产口爆吞精在线视频 | 免费人成在线视频无码 | 毛片内射-百度 | 亚洲男人av香蕉爽爽爽爽 | 日韩精品乱码av一区二区 | 在线播放亚洲第一字幕 | 国产成人精品久久亚洲高清不卡 | 国产精品久久国产精品99 | 国产麻豆精品一区二区三区v视界 | 人妻少妇精品无码专区动漫 | 国产av人人夜夜澡人人爽麻豆 | 麻豆人妻少妇精品无码专区 | 无码人妻丰满熟妇区五十路百度 | 成人无码视频免费播放 | 欧美怡红院免费全部视频 | 人妻天天爽夜夜爽一区二区 | 特级做a爰片毛片免费69 | 精品少妇爆乳无码av无码专区 | 99riav国产精品视频 | 久久精品国产精品国产精品污 | 丰满少妇熟乱xxxxx视频 | 午夜福利不卡在线视频 | 亲嘴扒胸摸屁股激烈网站 | 亚欧洲精品在线视频免费观看 | 日本肉体xxxx裸交 | 国产精品无码永久免费888 | 狠狠亚洲超碰狼人久久 | 无码成人精品区在线观看 | 理论片87福利理论电影 | 人人妻人人澡人人爽欧美一区 | 少妇邻居内射在线 | 国产电影无码午夜在线播放 | 四虎国产精品一区二区 | 亚洲人亚洲人成电影网站色 | 性生交大片免费看女人按摩摩 | 日本一区二区三区免费高清 | 亚洲爆乳无码专区 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 久久国产精品精品国产色婷婷 | 日本乱偷人妻中文字幕 | 亚拍精品一区二区三区探花 | 久久国产36精品色熟妇 | 国产福利视频一区二区 | 一二三四社区在线中文视频 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 午夜成人1000部免费视频 | 国产免费无码一区二区视频 | 国产成人精品久久亚洲高清不卡 | 久久人人爽人人人人片 | 又色又爽又黄的美女裸体网站 | 国产精品二区一区二区aⅴ污介绍 | a在线亚洲男人的天堂 | 日韩视频 中文字幕 视频一区 | 水蜜桃亚洲一二三四在线 | 少妇邻居内射在线 | 天天摸天天碰天天添 | 亚洲中文字幕av在天堂 | 亚洲区小说区激情区图片区 | а天堂中文在线官网 | 国产精品久久久午夜夜伦鲁鲁 | 高清不卡一区二区三区 | 亚洲第一网站男人都懂 | 欧美午夜特黄aaaaaa片 | 日本饥渴人妻欲求不满 | 一本久道久久综合婷婷五月 | 1000部夫妻午夜免费 | 丰满少妇高潮惨叫视频 | 一本色道久久综合狠狠躁 | 一本久道久久综合狠狠爱 | 人妻少妇精品无码专区二区 | 欧美日韩亚洲国产精品 | 国产人妻久久精品二区三区老狼 | 久久精品国产99久久6动漫 | 免费网站看v片在线18禁无码 | 双乳奶水饱满少妇呻吟 | 成人片黄网站色大片免费观看 | 亚洲日韩乱码中文无码蜜桃臀网站 | 国内老熟妇对白xxxxhd | 激情综合激情五月俺也去 | 成熟妇人a片免费看网站 | 色狠狠av一区二区三区 | 乱人伦人妻中文字幕无码久久网 | 少妇人妻偷人精品无码视频 | 国产人妻大战黑人第1集 | 久精品国产欧美亚洲色aⅴ大片 | 六月丁香婷婷色狠狠久久 | 97夜夜澡人人爽人人喊中国片 | 日韩av无码一区二区三区不卡 | 日日摸日日碰夜夜爽av | 亚洲色在线无码国产精品不卡 | 狠狠色噜噜狠狠狠狠7777米奇 | 亚洲国产欧美日韩精品一区二区三区 | 国产电影无码午夜在线播放 | 欧洲美熟女乱又伦 | 天干天干啦夜天干天2017 | 国产福利视频一区二区 | 无码一区二区三区在线观看 | 国内综合精品午夜久久资源 | 国产精品沙发午睡系列 | 扒开双腿疯狂进出爽爽爽视频 | 色欲av亚洲一区无码少妇 | 97精品人妻一区二区三区香蕉 | 久久久久av无码免费网 | www国产亚洲精品久久久日本 | 一个人看的视频www在线 | 精品熟女少妇av免费观看 | 亚洲国产日韩a在线播放 | 性欧美熟妇videofreesex | 国产亚洲欧美日韩亚洲中文色 | 领导边摸边吃奶边做爽在线观看 | 四虎国产精品免费久久 | 中文字幕 人妻熟女 | 国产精品手机免费 | 久久久久久av无码免费看大片 | 少妇无套内谢久久久久 | 日日摸天天摸爽爽狠狠97 | 又大又硬又爽免费视频 | 思思久久99热只有频精品66 | 亚洲精品久久久久久一区二区 | 精品厕所偷拍各类美女tp嘘嘘 | 日本免费一区二区三区最新 | 日韩亚洲欧美中文高清在线 | 激情爆乳一区二区三区 | 人人妻人人澡人人爽欧美精品 | 亚洲精品国产精品乱码不卡 | 欧美亚洲日韩国产人成在线播放 | 国产成人无码区免费内射一片色欲 | 日韩人妻无码中文字幕视频 | 久久久精品成人免费观看 | 无码精品国产va在线观看dvd | 亚洲欧美中文字幕5发布 | 日本丰满熟妇videos | 大胆欧美熟妇xx | 欧美 丝袜 自拍 制服 另类 | 成人无码视频在线观看网站 | 国产成人精品一区二区在线小狼 | 精品水蜜桃久久久久久久 | 老太婆性杂交欧美肥老太 | 精品久久久中文字幕人妻 | 亚洲中文无码av永久不收费 | 荫蒂被男人添的好舒服爽免费视频 | 国产av无码专区亚洲awww | 亚洲爆乳无码专区 | 亚洲人成网站在线播放942 | 亚洲s色大片在线观看 | 亚洲人成人无码网www国产 | 人妻插b视频一区二区三区 | 中文字幕无线码免费人妻 | www成人国产高清内射 | 日韩av无码一区二区三区不卡 | 国产成人无码区免费内射一片色欲 | 久久久www成人免费毛片 | 中文字幕无码免费久久9一区9 | 色一情一乱一伦一视频免费看 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产农村妇女高潮大叫 | 无套内谢老熟女 | 日韩成人一区二区三区在线观看 | 永久黄网站色视频免费直播 | 免费播放一区二区三区 | 亚洲午夜无码久久 | 国产疯狂伦交大片 | 成人毛片一区二区 | 粗大的内捧猛烈进出视频 | 久久精品99久久香蕉国产色戒 | 亚洲午夜福利在线观看 | 久久zyz资源站无码中文动漫 | 国产精品成人av在线观看 | 亚洲天堂2017无码 | 熟妇激情内射com | 熟妇女人妻丰满少妇中文字幕 | 久久精品国产亚洲精品 | 无码人中文字幕 | 荫蒂被男人添的好舒服爽免费视频 | 亚无码乱人伦一区二区 | 欧美日韩一区二区免费视频 | 天堂一区人妻无码 | 久久精品99久久香蕉国产色戒 | 人人妻人人澡人人爽欧美精品 | 久久精品国产一区二区三区肥胖 | 2019nv天堂香蕉在线观看 | 97精品国产97久久久久久免费 | 色综合久久中文娱乐网 | 国产一区二区三区精品视频 | 久久久婷婷五月亚洲97号色 | 国产成人av免费观看 | 天堂亚洲2017在线观看 | 九九综合va免费看 | 成人毛片一区二区 | 中文无码成人免费视频在线观看 | 久久zyz资源站无码中文动漫 | 欧美日韩人成综合在线播放 | 国精产品一品二品国精品69xx | 青青草原综合久久大伊人精品 | 亚洲欧美综合区丁香五月小说 | 日产精品高潮呻吟av久久 | 国产人妻精品一区二区三区不卡 | 亚洲一区二区三区播放 | 日本www一道久久久免费榴莲 | 国产偷抇久久精品a片69 | 无码吃奶揉捏奶头高潮视频 | 内射欧美老妇wbb | 乱人伦人妻中文字幕无码 | 国产激情艳情在线看视频 | 国产手机在线αⅴ片无码观看 | 日本精品人妻无码77777 天堂一区人妻无码 | 国产乡下妇女做爰 | 波多野结衣av在线观看 | 亚洲精品国偷拍自产在线观看蜜桃 | 天天燥日日燥 | 少妇被黑人到高潮喷出白浆 | 亚洲精品午夜国产va久久成人 | 日韩av无码中文无码电影 | 丝袜足控一区二区三区 | 久久99精品久久久久久动态图 | 欧美国产日产一区二区 | 乌克兰少妇xxxx做受 | 成人免费视频视频在线观看 免费 | 国产激情一区二区三区 | 中文字幕人妻无码一夲道 | 少妇一晚三次一区二区三区 | 扒开双腿吃奶呻吟做受视频 | 露脸叫床粗话东北少妇 | 色老头在线一区二区三区 | 亚洲 日韩 欧美 成人 在线观看 | 麻豆国产97在线 | 欧洲 | 大肉大捧一进一出好爽视频 | 国产成人无码区免费内射一片色欲 | 国产九九九九九九九a片 | 丰满岳乱妇在线观看中字无码 | 久久精品国产一区二区三区肥胖 | 国产精品.xx视频.xxtv | 极品嫩模高潮叫床 | 在线看片无码永久免费视频 | 国产精品第一区揄拍无码 | 无码精品国产va在线观看dvd | 日韩少妇内射免费播放 | 国产成人综合在线女婷五月99播放 | 国产在线一区二区三区四区五区 | 无码国模国产在线观看 | 久久aⅴ免费观看 | 荫蒂被男人添的好舒服爽免费视频 | 在线观看国产午夜福利片 | 草草网站影院白丝内射 | 亚洲精品美女久久久久久久 | 人妻少妇精品无码专区二区 | 狠狠色欧美亚洲狠狠色www | 日本大香伊一区二区三区 | 国产精品视频免费播放 | 日日躁夜夜躁狠狠躁 | 熟妇人妻中文av无码 | 一本无码人妻在中文字幕免费 | 国内精品人妻无码久久久影院 | 美女扒开屁股让男人桶 | 亚洲精品综合一区二区三区在线 | 国产国语老龄妇女a片 | 免费播放一区二区三区 | 天下第一社区视频www日本 | 一本无码人妻在中文字幕免费 | 无码播放一区二区三区 | 久久久久99精品国产片 | 亚洲娇小与黑人巨大交 | 131美女爱做视频 | 国产综合久久久久鬼色 | av在线亚洲欧洲日产一区二区 | 精品偷拍一区二区三区在线看 | 久久精品99久久香蕉国产色戒 | 国产成人精品无码播放 | 久久国产精品偷任你爽任你 | 中文字幕无码乱人伦 | 疯狂三人交性欧美 | 亚洲人成网站在线播放942 | 荫蒂被男人添的好舒服爽免费视频 | 亚洲成a人片在线观看无码3d | 高清国产亚洲精品自在久久 | 国产69精品久久久久app下载 | 在线成人www免费观看视频 | 久久久www成人免费毛片 | 亚洲va中文字幕无码久久不卡 | 蜜桃视频韩日免费播放 | 国产一区二区三区四区五区加勒比 | 国产99久久精品一区二区 | 荡女精品导航 | 大地资源网第二页免费观看 | 色五月五月丁香亚洲综合网 | 亚洲欧美国产精品久久 | 人妻熟女一区 | 久久久国产精品无码免费专区 | 国产激情无码一区二区 | 99久久精品日本一区二区免费 | 野狼第一精品社区 | 国产综合色产在线精品 | 无码人妻精品一区二区三区不卡 | 久久99精品国产麻豆蜜芽 | 午夜福利电影 | 成人影院yy111111在线观看 | 久久久久国色av免费观看性色 | 亚洲小说春色综合另类 | 国产午夜精品一区二区三区嫩草 | 精品成人av一区二区三区 | 一本大道伊人av久久综合 | 又大又硬又爽免费视频 | 久久五月精品中文字幕 | 久久精品国产大片免费观看 | 国内揄拍国内精品人妻 | 国产另类ts人妖一区二区 | 国精产品一区二区三区 | 日本精品久久久久中文字幕 | 国产舌乚八伦偷品w中 | 国产超碰人人爽人人做人人添 | 欧美成人午夜精品久久久 | 久久人人97超碰a片精品 | 狂野欧美激情性xxxx | 又色又爽又黄的美女裸体网站 | 午夜精品一区二区三区在线观看 | 欧美午夜特黄aaaaaa片 | 久久久av男人的天堂 | 亚洲另类伦春色综合小说 | 国产精品自产拍在线观看 | 亚洲经典千人经典日产 | 日韩精品a片一区二区三区妖精 | 奇米影视888欧美在线观看 | 久久久久亚洲精品中文字幕 | 欧美丰满老熟妇xxxxx性 | 亚拍精品一区二区三区探花 | 国产亚洲日韩欧美另类第八页 | 波多野结衣av在线观看 | 国产香蕉尹人综合在线观看 | 狂野欧美激情性xxxx | 欧美熟妇另类久久久久久多毛 | 亚洲自偷精品视频自拍 | 狠狠躁日日躁夜夜躁2020 | 国产亚洲精品久久久久久久 | 日韩无套无码精品 | 青青久在线视频免费观看 | 日韩av无码中文无码电影 | 国产精品内射视频免费 | 红桃av一区二区三区在线无码av | 强伦人妻一区二区三区视频18 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 亚洲色欲久久久综合网东京热 | 成在人线av无码免观看麻豆 | 东京无码熟妇人妻av在线网址 | 在线 国产 欧美 亚洲 天堂 | 日韩成人一区二区三区在线观看 | 国产亚洲tv在线观看 | 免费看男女做好爽好硬视频 | 丝袜美腿亚洲一区二区 | 国产精品无码一区二区三区不卡 | 亚洲日韩av一区二区三区四区 | 日本熟妇大屁股人妻 | 国产熟妇高潮叫床视频播放 | 国产女主播喷水视频在线观看 | 人人妻人人澡人人爽精品欧美 | 亚洲乱码国产乱码精品精 | 99久久人妻精品免费二区 | 成人免费视频一区二区 | 99re在线播放 | 东京无码熟妇人妻av在线网址 | 黑人玩弄人妻中文在线 | 欧洲精品码一区二区三区免费看 | 少妇性l交大片 | 日本爽爽爽爽爽爽在线观看免 | 奇米影视7777久久精品 | 午夜成人1000部免费视频 | 久久久精品成人免费观看 | 国产在线精品一区二区三区直播 | 国产精品欧美成人 | 一本色道久久综合亚洲精品不卡 | 天堂无码人妻精品一区二区三区 | a在线观看免费网站大全 | 国产情侣作爱视频免费观看 | 性啪啪chinese东北女人 | 国产sm调教视频在线观看 | 女人高潮内射99精品 | 2020最新国产自产精品 | 一本久久a久久精品vr综合 | 国产手机在线αⅴ片无码观看 | 黑人巨大精品欧美黑寡妇 | 丰满岳乱妇在线观看中字无码 | 色一情一乱一伦一区二区三欧美 | 久久亚洲中文字幕无码 | 激情国产av做激情国产爱 | 日韩欧美中文字幕在线三区 | 久久精品国产精品国产精品污 | 久久亚洲精品成人无码 | 无码av最新清无码专区吞精 | 亚洲gv猛男gv无码男同 | 强伦人妻一区二区三区视频18 | 男人扒开女人内裤强吻桶进去 | 激情内射日本一区二区三区 | 国产高清av在线播放 | 男人的天堂2018无码 | 无码人妻av免费一区二区三区 | 激情内射日本一区二区三区 | 亚洲va中文字幕无码久久不卡 | 成人女人看片免费视频放人 | 欧美野外疯狂做受xxxx高潮 | 小泽玛莉亚一区二区视频在线 | 国产成人精品视频ⅴa片软件竹菊 | 久久综合香蕉国产蜜臀av | 午夜性刺激在线视频免费 | 欧美一区二区三区视频在线观看 | 久久人人97超碰a片精品 | 噜噜噜亚洲色成人网站 | 色综合天天综合狠狠爱 | 人人超人人超碰超国产 | 伊人久久大香线焦av综合影院 | 国产 精品 自在自线 | 纯爱无遮挡h肉动漫在线播放 | 欧美一区二区三区视频在线观看 | 国产av剧情md精品麻豆 | 久久精品国产精品国产精品污 | 丁香啪啪综合成人亚洲 | 国产激情无码一区二区app | 丰满少妇人妻久久久久久 | 中文字幕乱码中文乱码51精品 | 两性色午夜视频免费播放 | 又色又爽又黄的美女裸体网站 | 日本护士xxxxhd少妇 | 久久天天躁夜夜躁狠狠 | 久久久久久久久蜜桃 | 免费观看又污又黄的网站 | 久久www免费人成人片 | 国产成人av免费观看 | 久久综合网欧美色妞网 | 久久无码专区国产精品s | 欧美老人巨大xxxx做受 | 亚洲国产高清在线观看视频 | 国产黄在线观看免费观看不卡 | 欧美freesex黑人又粗又大 | 久久精品国产一区二区三区 | 国产熟妇另类久久久久 | 亚洲国产精华液网站w | 少妇被黑人到高潮喷出白浆 | 国产电影无码午夜在线播放 | 精品国产一区二区三区四区在线看 | 亚洲精品中文字幕乱码 | 色综合久久88色综合天天 | 青青久在线视频免费观看 | 亚洲人成人无码网www国产 | 99久久无码一区人妻 | 免费乱码人妻系列无码专区 | 男女作爱免费网站 | 在线观看国产一区二区三区 | 欧美一区二区三区视频在线观看 | 国产精品久久久久久久9999 | 亚洲日韩av一区二区三区中文 | 久久天天躁狠狠躁夜夜免费观看 | 亚洲男人av天堂午夜在 | 久久久久久久久888 | 精品国产一区二区三区av 性色 | 日本乱偷人妻中文字幕 | 欧美丰满少妇xxxx性 | 欧美日韩在线亚洲综合国产人 | 综合激情五月综合激情五月激情1 | 国产区女主播在线观看 | 亲嘴扒胸摸屁股激烈网站 | 熟妇人妻无码xxx视频 | 国产农村乱对白刺激视频 | 一区二区三区乱码在线 | 欧洲 | 国产成人无码av在线影院 | 女人和拘做爰正片视频 | 成人片黄网站色大片免费观看 | 一本一道久久综合久久 | 国产精品久久国产三级国 | 牲欲强的熟妇农村老妇女 | 久久久精品成人免费观看 | 内射后入在线观看一区 | 欧美日韩在线亚洲综合国产人 | ass日本丰满熟妇pics | 俺去俺来也在线www色官网 | 国产激情精品一区二区三区 | 蜜臀av在线播放 久久综合激激的五月天 | 麻豆国产人妻欲求不满谁演的 | 午夜成人1000部免费视频 | 精品人妻中文字幕有码在线 | 欧美丰满老熟妇xxxxx性 | 久久天天躁夜夜躁狠狠 | 国产精品无套呻吟在线 | 国产偷国产偷精品高清尤物 | aa片在线观看视频在线播放 | 欧美日韩视频无码一区二区三 | 在线成人www免费观看视频 | 亚洲国产精品无码久久久久高潮 | 国产精品多人p群无码 | 国内精品一区二区三区不卡 | 色一情一乱一伦 | 国产精华av午夜在线观看 | 国产性生交xxxxx无码 | 夜精品a片一区二区三区无码白浆 | 性生交大片免费看l | 久久亚洲精品成人无码 | 玩弄人妻少妇500系列视频 | 麻豆果冻传媒2021精品传媒一区下载 | 少妇一晚三次一区二区三区 | 国产女主播喷水视频在线观看 | 超碰97人人做人人爱少妇 | 亚洲国产av精品一区二区蜜芽 | 国产97人人超碰caoprom | 国产舌乚八伦偷品w中 | 日本丰满熟妇videos | 国产午夜亚洲精品不卡下载 | 亚洲伊人久久精品影院 | 精品一二三区久久aaa片 | 精品 日韩 国产 欧美 视频 | 成人女人看片免费视频放人 | 极品尤物被啪到呻吟喷水 | 国产精品国产三级国产专播 | 久久人人爽人人爽人人片ⅴ | 日本精品少妇一区二区三区 | 成人无码精品一区二区三区 | 亚洲中文字幕久久无码 | 日本精品人妻无码77777 天堂一区人妻无码 | 国产精品丝袜黑色高跟鞋 | 麻豆国产人妻欲求不满谁演的 | 人人妻人人澡人人爽人人精品 | 一本久久伊人热热精品中文字幕 | 特黄特色大片免费播放器图片 | 久久精品人人做人人综合试看 | 成人免费视频视频在线观看 免费 | 久久精品国产精品国产精品污 | 久久精品女人天堂av免费观看 | 亚洲精品久久久久中文第一幕 | 亚洲综合色区中文字幕 | 人妻无码久久精品人妻 | 一本久久a久久精品vr综合 | 午夜成人1000部免费视频 | 亚洲成a人一区二区三区 | 国产精品国产三级国产专播 | 九九在线中文字幕无码 | 小sao货水好多真紧h无码视频 | 久久精品99久久香蕉国产色戒 | 日韩精品成人一区二区三区 | 强开小婷嫩苞又嫩又紧视频 | 亚洲 激情 小说 另类 欧美 | 中文字幕无码免费久久99 | 国产另类ts人妖一区二区 | 国内精品人妻无码久久久影院 | 久久亚洲中文字幕无码 | 动漫av网站免费观看 | 亚洲gv猛男gv无码男同 | 精品国产精品久久一区免费式 | 18黄暴禁片在线观看 | aa片在线观看视频在线播放 | 国产成人无码av片在线观看不卡 | 精品国产av色一区二区深夜久久 | 国产精品久久久午夜夜伦鲁鲁 | 国产疯狂伦交大片 | 一本久久a久久精品亚洲 | 曰本女人与公拘交酡免费视频 | 成人免费视频一区二区 | 老熟女乱子伦 | 日本xxxx色视频在线观看免费 | 国产成人无码a区在线观看视频app | 亚洲国产精品久久久天堂 | 国产成人精品无码播放 | 成人性做爰aaa片免费看不忠 | 久久 国产 尿 小便 嘘嘘 | 少妇无码吹潮 | 亚洲日韩av一区二区三区中文 | 中文字幕无码免费久久9一区9 | 国产乱人伦偷精品视频 | 亚洲精品无码国产 | 乱人伦中文视频在线观看 | 激情五月综合色婷婷一区二区 | 在线播放免费人成毛片乱码 | 国产真实伦对白全集 | 日本一区二区三区免费高清 | 亚洲小说春色综合另类 | 亚洲成av人片在线观看无码不卡 | 在线 国产 欧美 亚洲 天堂 | 国产精品18久久久久久麻辣 | 老熟妇乱子伦牲交视频 | 内射老妇bbwx0c0ck | 国产熟女一区二区三区四区五区 | 亚洲va中文字幕无码久久不卡 | 亚洲中文字幕成人无码 | 内射欧美老妇wbb | 国产精品无码成人午夜电影 | 夜精品a片一区二区三区无码白浆 | 女人被爽到呻吟gif动态图视看 | 亚洲色成人中文字幕网站 | 麻豆果冻传媒2021精品传媒一区下载 | 国精产品一区二区三区 | 日产精品高潮呻吟av久久 | 伊人久久大香线焦av综合影院 | 大地资源中文第3页 | 成人女人看片免费视频放人 | 日韩欧美中文字幕公布 | 亚洲国产综合无码一区 | yw尤物av无码国产在线观看 | 久久99精品国产.久久久久 | 精品熟女少妇av免费观看 | 超碰97人人做人人爱少妇 | 亚洲人成无码网www | 亚洲日韩一区二区三区 | 精品一区二区三区无码免费视频 | 亚洲天堂2017无码中文 | 欧美国产亚洲日韩在线二区 | 俄罗斯老熟妇色xxxx | 亚洲综合无码久久精品综合 | 国产精品办公室沙发 | 久久久精品欧美一区二区免费 | 人妻人人添人妻人人爱 | 丰满岳乱妇在线观看中字无码 | 99在线 | 亚洲 | 无码人妻丰满熟妇区五十路百度 | 久久久久久av无码免费看大片 | 少妇激情av一区二区 | 欧美成人高清在线播放 | √天堂中文官网8在线 | 日韩欧美中文字幕在线三区 | 熟女少妇人妻中文字幕 | 久久人人97超碰a片精品 | 天下第一社区视频www日本 | 国产精品久久久久久久9999 | 国产成人精品优优av | 色综合久久中文娱乐网 | 亚洲中文字幕无码一久久区 | 国产明星裸体无码xxxx视频 | 日本xxxx色视频在线观看免费 | 中文字幕人妻无码一区二区三区 | 国产麻豆精品精东影业av网站 | 粉嫩少妇内射浓精videos | 亚洲一区二区三区无码久久 | 综合激情五月综合激情五月激情1 | 中文字幕无码日韩专区 | 无遮挡啪啪摇乳动态图 | 亚洲精品一区二区三区四区五区 | 麻豆果冻传媒2021精品传媒一区下载 | 亚洲精品国产第一综合99久久 | 又大又硬又爽免费视频 | 日本精品高清一区二区 | 久久综合色之久久综合 | 中文无码成人免费视频在线观看 | 精品厕所偷拍各类美女tp嘘嘘 | 国产精品资源一区二区 | 人妻aⅴ无码一区二区三区 | 国产三级久久久精品麻豆三级 | 色综合久久中文娱乐网 | 亚洲欧美国产精品专区久久 | 色欲人妻aaaaaaa无码 | 日本在线高清不卡免费播放 | 午夜免费福利小电影 | 免费国产成人高清在线观看网站 | 成人免费无码大片a毛片 | 男女下面进入的视频免费午夜 | 久久国内精品自在自线 | 性开放的女人aaa片 | 少妇被黑人到高潮喷出白浆 | 国产精品爱久久久久久久 | 精品国产av色一区二区深夜久久 | 亚洲精品午夜国产va久久成人 | 东京热男人av天堂 | 日韩欧美中文字幕公布 | 国产乱人无码伦av在线a | 久久综合网欧美色妞网 | 国产两女互慰高潮视频在线观看 | 亚洲 日韩 欧美 成人 在线观看 | 国产欧美精品一区二区三区 | 黑人巨大精品欧美一区二区 | 欧美大屁股xxxxhd黑色 | 亚洲精品无码国产 | 无码人妻黑人中文字幕 | 国产成人无码av一区二区 | 中文字幕无码人妻少妇免费 | 国产做国产爱免费视频 | 久久久久国色av免费观看性色 | 女高中生第一次破苞av | 亚洲小说图区综合在线 | 巨爆乳无码视频在线观看 | 色 综合 欧美 亚洲 国产 | 亚洲 激情 小说 另类 欧美 | 亚洲精品成人福利网站 | 国产超碰人人爽人人做人人添 | 国产人妖乱国产精品人妖 | аⅴ资源天堂资源库在线 | 亚洲综合在线一区二区三区 | 欧美真人作爱免费视频 | 国内精品久久毛片一区二区 | 亚洲自偷自拍另类第1页 | 任你躁在线精品免费 | 性欧美videos高清精品 | 男女爱爱好爽视频免费看 | 少妇被粗大的猛进出69影院 | 人人妻人人澡人人爽精品欧美 | 久久国内精品自在自线 | 久久久久成人片免费观看蜜芽 | 在线播放免费人成毛片乱码 | 精品欧美一区二区三区久久久 | 亚洲 a v无 码免 费 成 人 a v | 樱花草在线社区www | 国产香蕉尹人综合在线观看 | 日本熟妇人妻xxxxx人hd | av在线亚洲欧洲日产一区二区 | 亚洲欧洲无卡二区视頻 | 亲嘴扒胸摸屁股激烈网站 | 狠狠色欧美亚洲狠狠色www | 1000部夫妻午夜免费 | 天堂亚洲2017在线观看 | 亚洲乱码日产精品bd | 亚洲码国产精品高潮在线 | 欧美xxxxx精品 | 无码人妻精品一区二区三区不卡 | 国产艳妇av在线观看果冻传媒 | 欧美性生交xxxxx久久久 | 装睡被陌生人摸出水好爽 | 精品国产av色一区二区深夜久久 | 少妇久久久久久人妻无码 | 午夜无码人妻av大片色欲 | aa片在线观看视频在线播放 | 日本在线高清不卡免费播放 | 午夜免费福利小电影 | 久久精品国产日本波多野结衣 | 亚洲小说图区综合在线 | 久久99精品久久久久婷婷 | 免费网站看v片在线18禁无码 | 久久国语露脸国产精品电影 | 2019nv天堂香蕉在线观看 | 人妻天天爽夜夜爽一区二区 | 国产真人无遮挡作爱免费视频 | 日日噜噜噜噜夜夜爽亚洲精品 | 婷婷丁香五月天综合东京热 | 久热国产vs视频在线观看 | 黄网在线观看免费网站 | 免费看少妇作爱视频 | 久久这里只有精品视频9 | 久久久www成人免费毛片 | 2020久久香蕉国产线看观看 | 欧美人与善在线com | 蜜臀av无码人妻精品 | 精品一二三区久久aaa片 | 熟女少妇在线视频播放 | 熟女少妇在线视频播放 | 蜜桃臀无码内射一区二区三区 | 日韩无码专区 | 久久久婷婷五月亚洲97号色 | 亚洲成av人片天堂网无码】 | 少妇性l交大片欧洲热妇乱xxx | 日韩少妇内射免费播放 | 亚洲乱亚洲乱妇50p | 亚洲欧美国产精品久久 | 久久久www成人免费毛片 | 成人毛片一区二区 | 亚洲热妇无码av在线播放 | 色 综合 欧美 亚洲 国产 | 人妻天天爽夜夜爽一区二区 | 国产偷抇久久精品a片69 | 强伦人妻一区二区三区视频18 | 国产成人无码区免费内射一片色欲 | 亚洲欧洲中文日韩av乱码 | 亚洲一区av无码专区在线观看 | 日日橹狠狠爱欧美视频 | 精品久久久无码中文字幕 | 久久精品国产精品国产精品污 | 无套内射视频囯产 | 国产激情无码一区二区app | 人人妻人人澡人人爽精品欧美 | 全黄性性激高免费视频 | 中文字幕无码av波多野吉衣 | 国产精品99久久精品爆乳 | 久久久精品成人免费观看 | 国产欧美精品一区二区三区 | 日日鲁鲁鲁夜夜爽爽狠狠 | 国产亚洲精品久久久久久大师 | 亚洲国产日韩a在线播放 | 久久人人97超碰a片精品 | 久久五月精品中文字幕 | aⅴ亚洲 日韩 色 图网站 播放 | 爽爽影院免费观看 | 精品 日韩 国产 欧美 视频 | 国产亚洲欧美日韩亚洲中文色 | 久久天天躁狠狠躁夜夜免费观看 | 亚洲色成人中文字幕网站 | 动漫av一区二区在线观看 | 国产精品a成v人在线播放 | 亚洲码国产精品高潮在线 | 国产成人精品必看 | 精品久久久无码人妻字幂 | 蜜桃视频韩日免费播放 | 国产麻豆精品精东影业av网站 | 国产凸凹视频一区二区 | 内射欧美老妇wbb | 中文字幕乱码亚洲无线三区 | 狂野欧美性猛xxxx乱大交 | 色综合久久久无码网中文 | 亚洲欧洲无卡二区视頻 | 2019午夜福利不卡片在线 | 国产精品成人av在线观看 | 国产精品18久久久久久麻辣 | 久激情内射婷内射蜜桃人妖 | 波多野结衣 黑人 | 99久久精品日本一区二区免费 | 欧美精品无码一区二区三区 | 伊人久久大香线蕉亚洲 | 麻豆精品国产精华精华液好用吗 | 久久亚洲中文字幕精品一区 | 国产69精品久久久久app下载 | 亚洲小说春色综合另类 | 久久久久99精品国产片 | 久久久精品456亚洲影院 | 国产精品爱久久久久久久 | 国产精品办公室沙发 | 成人精品天堂一区二区三区 | 亚洲熟妇色xxxxx欧美老妇 | 亚洲欧洲日本综合aⅴ在线 | 亚洲人成网站在线播放942 | 久久综合狠狠综合久久综合88 | 亚洲精品成人福利网站 | 亚洲日韩av片在线观看 | 国产午夜无码视频在线观看 | 久久国产36精品色熟妇 | 久久精品人妻少妇一区二区三区 | 欧美大屁股xxxxhd黑色 | 亚洲精品国产精品乱码不卡 | 国产精品无码久久av | 国产成人人人97超碰超爽8 | 色综合久久久久综合一本到桃花网 | 牲欲强的熟妇农村老妇女 | 亚洲综合伊人久久大杳蕉 | 成人女人看片免费视频放人 | 久久精品中文字幕大胸 | 999久久久国产精品消防器材 | 99久久精品国产一区二区蜜芽 | 亚洲欧美精品aaaaaa片 | 国模大胆一区二区三区 | 一本色道久久综合亚洲精品不卡 | 天天摸天天碰天天添 | 在线播放亚洲第一字幕 | 乌克兰少妇性做爰 | 国产99久久精品一区二区 | 少妇的肉体aa片免费 | 国产猛烈高潮尖叫视频免费 | 色欲综合久久中文字幕网 | 亚洲成色www久久网站 | 久久久av男人的天堂 | 久久99精品国产.久久久久 | 色偷偷人人澡人人爽人人模 | 国产精品久久久久9999小说 | 国产精品对白交换视频 | 国产午夜精品一区二区三区嫩草 | 熟女少妇人妻中文字幕 | 在线观看欧美一区二区三区 | 亚洲日韩av一区二区三区中文 | 无码国产乱人伦偷精品视频 | 亚洲自偷自拍另类第1页 | 中文字幕中文有码在线 | 国产精品亚洲а∨无码播放麻豆 | 女人被男人爽到呻吟的视频 | 国产人妻人伦精品1国产丝袜 | 久久久成人毛片无码 | 夜夜高潮次次欢爽av女 | 亚洲中文字幕成人无码 | 欧美肥老太牲交大战 | 狠狠色噜噜狠狠狠7777奇米 | 荫蒂添的好舒服视频囗交 | 久久婷婷五月综合色国产香蕉 | 午夜不卡av免费 一本久久a久久精品vr综合 | 鲁大师影院在线观看 | 51国偷自产一区二区三区 | 国产在线无码精品电影网 | 精品偷自拍另类在线观看 | 亚洲成a人片在线观看日本 | 未满小14洗澡无码视频网站 | 少妇性l交大片欧洲热妇乱xxx | 欧美真人作爱免费视频 | 亚洲gv猛男gv无码男同 | 欧美性黑人极品hd | 性欧美大战久久久久久久 | 色欲人妻aaaaaaa无码 | 国产一精品一av一免费 | 男女下面进入的视频免费午夜 | 成人无码影片精品久久久 | 我要看www免费看插插视频 | 日本丰满熟妇videos | 免费乱码人妻系列无码专区 | 久久亚洲国产成人精品性色 | 97精品国产97久久久久久免费 | 国产免费久久精品国产传媒 | 性欧美熟妇videofreesex | 色婷婷久久一区二区三区麻豆 | 无遮无挡爽爽免费视频 | 国产成人精品优优av | 在线播放免费人成毛片乱码 | 欧美国产日韩亚洲中文 | 久久久久久久久888 | 成人影院yy111111在线观看 | 亚洲日韩av一区二区三区中文 | 国产精品久久久久久久影院 | 亚洲人亚洲人成电影网站色 | 丰满人妻精品国产99aⅴ | 国产精品欧美成人 | 久久99国产综合精品 | 亚洲欧洲日本综合aⅴ在线 | 精品国精品国产自在久国产87 | 亚洲国产精品一区二区美利坚 | 天堂а√在线地址中文在线 | 性色av无码免费一区二区三区 | 亚洲精品国产a久久久久久 | 国产亚洲精品精品国产亚洲综合 | 影音先锋中文字幕无码 | 国产精品内射视频免费 | 国产av剧情md精品麻豆 | 夜精品a片一区二区三区无码白浆 | 日本护士毛茸茸高潮 | 国语自产偷拍精品视频偷 | 2019nv天堂香蕉在线观看 | 午夜福利不卡在线视频 | 装睡被陌生人摸出水好爽 | 亚洲 高清 成人 动漫 | 亚洲成av人在线观看网址 | 亚洲色欲色欲欲www在线 | 蜜臀aⅴ国产精品久久久国产老师 | 亚洲欧洲日本无在线码 | 亚洲国产精品成人久久蜜臀 | 日本欧美一区二区三区乱码 | 综合网日日天干夜夜久久 | 又大又黄又粗又爽的免费视频 | 啦啦啦www在线观看免费视频 | 中文字幕 亚洲精品 第1页 | 亚洲va中文字幕无码久久不卡 | 久久www免费人成人片 | 亚无码乱人伦一区二区 | 亚洲国产日韩a在线播放 | 红桃av一区二区三区在线无码av | 一个人看的www免费视频在线观看 | 国产精品美女久久久 | 88国产精品欧美一区二区三区 | 久久精品丝袜高跟鞋 | 在线观看国产一区二区三区 | 十八禁视频网站在线观看 | 久久精品中文字幕一区 | 国产激情综合五月久久 | 99riav国产精品视频 | 女人和拘做爰正片视频 | 成人免费视频一区二区 | 亚洲欧洲无卡二区视頻 | 精品乱子伦一区二区三区 | 在线 国产 欧美 亚洲 天堂 | 欧洲精品码一区二区三区免费看 | 亚洲欧洲中文日韩av乱码 | 国产成人一区二区三区在线观看 | 少妇性荡欲午夜性开放视频剧场 | 丰腴饱满的极品熟妇 | 四十如虎的丰满熟妇啪啪 | 熟女少妇在线视频播放 | 77777熟女视频在线观看 а天堂中文在线官网 | 精品人人妻人人澡人人爽人人 | 国产成人亚洲综合无码 | 亚洲国产精品久久人人爱 | 中文久久乱码一区二区 | √天堂资源地址中文在线 | 亚洲成av人影院在线观看 | 亚洲欧美精品伊人久久 | 国产精品久久国产三级国 | 国产黄在线观看免费观看不卡 | 成人无码精品1区2区3区免费看 | 中文字幕久久久久人妻 | 久久久精品欧美一区二区免费 | 国产精品久久久久久亚洲毛片 | 日韩 欧美 动漫 国产 制服 | 亚洲成av人片天堂网无码】 | 国产成人无码av在线影院 | 99久久久无码国产aaa精品 | 国产一区二区不卡老阿姨 | 波多野结衣av在线观看 | 熟女体下毛毛黑森林 | 亚洲精品国产品国语在线观看 | 欧美一区二区三区 | 丁香花在线影院观看在线播放 | 亚洲精品欧美二区三区中文字幕 | 高潮喷水的毛片 | 国产精品无码一区二区三区不卡 | 亚洲国产一区二区三区在线观看 | av无码久久久久不卡免费网站 | 中文字幕乱码亚洲无线三区 | 亚洲熟悉妇女xxx妇女av | 麻豆国产人妻欲求不满 | 亚洲精品一区二区三区在线观看 | 亚洲色www成人永久网址 | 国产婷婷色一区二区三区在线 | 亚洲国产高清在线观看视频 | 高潮毛片无遮挡高清免费视频 | 午夜不卡av免费 一本久久a久久精品vr综合 | 欧美人与禽猛交狂配 | 久久精品国产日本波多野结衣 | 欧美一区二区三区 | 乱人伦中文视频在线观看 | 老司机亚洲精品影院无码 | 色一情一乱一伦一视频免费看 | 精品一二三区久久aaa片 | 亚洲精品欧美二区三区中文字幕 | 高潮喷水的毛片 | 亚洲人成网站免费播放 | 动漫av一区二区在线观看 | 又大又硬又爽免费视频 | 欧美性生交xxxxx久久久 | 亚洲伊人久久精品影院 | 日韩少妇内射免费播放 | 欧美老人巨大xxxx做受 | 精品一区二区三区无码免费视频 | 精品无码国产自产拍在线观看蜜 | 久久午夜夜伦鲁鲁片无码免费 | 131美女爱做视频 | 乌克兰少妇性做爰 | 欧美丰满熟妇xxxx性ppx人交 | 国产精华av午夜在线观看 | 日本精品人妻无码免费大全 | 啦啦啦www在线观看免费视频 | 国产99久久精品一区二区 | 亚洲日韩精品欧美一区二区 | 国产内射爽爽大片视频社区在线 | 久久精品国产亚洲精品 | 在线a亚洲视频播放在线观看 | 亚洲国产一区二区三区在线观看 | 中文字幕 人妻熟女 | 久久精品成人欧美大片 | 日韩少妇白浆无码系列 | 国产午夜福利亚洲第一 | 久久久精品人妻久久影视 | 免费国产黄网站在线观看 | 白嫩日本少妇做爰 | 国产尤物精品视频 | 精品无码国产自产拍在线观看蜜 | 亚洲国产精品久久人人爱 | 无码午夜成人1000部免费视频 | 久久久久亚洲精品中文字幕 | 国产精品高潮呻吟av久久4虎 | 性生交大片免费看女人按摩摩 | 在线播放无码字幕亚洲 | 狠狠色噜噜狠狠狠7777奇米 | 极品尤物被啪到呻吟喷水 | 久久人人爽人人爽人人片av高清 | 中文字幕无码人妻少妇免费 | 激情人妻另类人妻伦 | 成熟妇人a片免费看网站 | 精品久久久久久人妻无码中文字幕 | 女高中生第一次破苞av | 无码播放一区二区三区 | 日韩精品成人一区二区三区 | 国产一区二区三区四区五区加勒比 | 99久久亚洲精品无码毛片 | 亚洲一区av无码专区在线观看 | 国产精品久久久久7777 | 国产人妻精品午夜福利免费 | 久久精品国产一区二区三区肥胖 | 中文无码成人免费视频在线观看 | 亚洲国产精品一区二区美利坚 | 熟女俱乐部五十路六十路av | 精品久久久久久人妻无码中文字幕 | 99精品国产综合久久久久五月天 | 亚洲日韩av一区二区三区中文 | 夜夜影院未满十八勿进 | 国产免费久久久久久无码 | 国模大胆一区二区三区 | 国产一区二区三区精品视频 | 男女作爱免费网站 | 蜜桃视频韩日免费播放 | 人人妻人人澡人人爽欧美一区 | 日韩欧美中文字幕公布 | 九九久久精品国产免费看小说 | 无码av免费一区二区三区试看 | 国精品人妻无码一区二区三区蜜柚 | av人摸人人人澡人人超碰下载 | 狠狠亚洲超碰狼人久久 | 日本欧美一区二区三区乱码 | 亚洲色成人中文字幕网站 | 国产又爽又黄又刺激的视频 | 人妻互换免费中文字幕 | 国产手机在线αⅴ片无码观看 | 国产精品爱久久久久久久 | 精品国产国产综合精品 | 亚洲欧洲无卡二区视頻 | 97久久国产亚洲精品超碰热 | 国产色xx群视频射精 | 国产激情综合五月久久 | 欧美日韩久久久精品a片 | 精品人妻中文字幕有码在线 | 少妇无码av无码专区在线观看 |