精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Canvas從入門到小豬頭

開發 前端
Canvas(畫布)是在HTML5中新增的標簽用于在網頁實時生成圖像,可以操作圖像內容,是一個可以用JavaScript操作的位圖(bitmap)。

[[382744]]

通過本文你將了解canvas簡介及其比較常用的方法,并利用canvas實現一個小豬頭。

 

一、Canvas簡介

1.1 什么是canvas

Canvas(畫布)是在HTML5中新增的標簽用于在網頁實時生成圖像,可以操作圖像內容,是一個可以用JavaScript操作的位圖(bitmap)。

1.2 canvas的坐標系統

canvas的坐標系統如下圖所示,其具有如下特點:

  • x軸正方向向右、y軸正方向向下
  • 畫布的原點在左上角
  • 橫縱坐標單位為像素
  • 每個軸的最小單元為一個像素(柵格)

 

1.3 canvas的繪制流程

  1. 創建一個標簽
  2. 獲取canvas元素對應的DOM對象,這是一個Canvas對象
  3. 調用Canvas對象的getContext()方法,該方法返回一個CanvasRenderingContext2D對象,該對象即可繪制圖形
  4. 調用CanvasRenderingContext2D對象的方法繪圖

1.4 canvas的應用領域

canvas這個神奇的東西有很多領域可以得到應用,下面我們一起嘮一嘮。

  1. 游戲:canvas 在基于 Web 的圖像顯示方面比 Flash 更加立體、更加精巧,canvas 游戲在流暢度和跨平臺方面更優秀,例如這25款canvas游戲
  2. 可視化的庫:Echart
  3. banner廣告:Canvas 實現動態的廣告效果非常合適
  4. 圖形編輯器:后續Photoshop能夠100%基于Web實現
  5. 微信讀書、騰訊文檔均是通過canvas實現

二、基礎功能

通過第一章對canvas有了初步的認識,本章就按照一個人繪制一幅畫的思路進行演化,逐步了解canvas的基本功能,從而更好的使用它實現一些酷炫的效果。

2.1 坐標系選擇

當要繪制一幅畫時首先要確定坐標系,只有選擇好了坐標系之后才好動筆,在canvas中默認坐標系在左上角(X軸正方向向右、Y軸正方向向下),可是有的時候需要變換坐標系才能更方便的實現所需的效果,此時需要變換坐標系,canvas提供了以下幾種變換坐標系的方式:

  1. translate(dx,dy):平移坐標系。相當于把原來位于(0,0)位置的坐標原點平移到(dx、dy)點。
  2. rotate(angle):旋轉坐標系。該方法控制坐標系統順時針旋轉angle弧度。
  3. scale(sx,sy):縮放坐標系。該方法控制坐標系統水平方向上縮放sx,垂直方向上縮放sy。
  4. transform(a,b,c,d,e,f):允許縮放、旋轉、移動并傾斜當前的環境坐標系,其中a表示水平縮放、b表示水平切斜、c表示垂直切斜、d表示垂直縮放、e表示水平移動、f表示垂直移動。

  1. function main() { 
  2.     const canvas = document.getElementById('canvasId'); 
  3.     const ctx = canvas.getContext('2d'); 
  4.     ctx.lineWidth = 4; 
  5.     // 默認 
  6.     ctx.save(); 
  7.     ctx.strokeStyle = '#F00'
  8.     drawCoordiante(ctx); 
  9.     ctx.restore(); 
  10.  
  11.     // 平移 
  12.     ctx.save(); 
  13.     ctx.translate(150, 150); 
  14.     ctx.strokeStyle = '#0F0'
  15.     drawCoordiante(ctx); 
  16.     ctx.restore(); 
  17.  
  18.     // 旋轉 
  19.     ctx.save(); 
  20.     ctx.translate(300, 300); 
  21.     ctx.rotate(-Math.PI / 2); 
  22.     ctx.strokeStyle = '#00F'
  23.     drawCoordiante(ctx); 
  24.     ctx.restore(); 
  25.  
  26.     // 縮放 
  27.     ctx.save(); 
  28.     ctx.translate(400, 400); 
  29.     ctx.rotate(-Math.PI / 2); 
  30.     ctx.scale(0.5, 0.5); 
  31.     ctx.strokeStyle = '#000'
  32.     drawCoordiante(ctx); 
  33.     ctx.restore(); 
  34.  
  35. function drawCoordiante(ctx) { 
  36.     ctx.beginPath(); 
  37.     ctx.moveTo(0, 0); 
  38.     ctx.lineTo(120, 0); 
  39.     ctx.moveTo(0, 0); 
  40.     ctx.lineTo(0, 80); 
  41.     ctx.closePath(); 
  42.     ctx.stroke(); 
  43.  
  44. main(); 

2.2 圖形繪制

坐標系選擇好了之后,就要開始動筆創作大作了,那么canvas到底允許繪制哪些內容呢?

直線

  1. function drawLine(ctx, startX, startY, endX, endY) { 
  2.     ctx.moveTo(startX, startY); 
  3.     ctx.lineTo(endX, endY); 
  4.     ctx.stroke(); 

圓弧

  1. function drawCircle(ctx, x, y, R, startAngle, endAngle) { 
  2.     ctx.arc(x, y, R, startAngle, endAngle); 
  3.     ctx.stroke(); 

曲線

  1. // 貝濟埃曲線 
  2. function drawBezierCurve(ctx, cpX1, cpY1, cpX, cpY2, endX, endY) { 
  3.     ctx.bezierCurveTo(cpX1, cpY1, cpX, cpY2, endX, endY); 
  4.     ctx.stroke(); 
  5. // 二次曲線 
  6. function drawQuadraticCurve(ctx, cpX, cpY, endX, endY) { 
  7.     ctx.quadraticCurveTo(cpX, cpY, endX, endY); 
  8.     ctx.stroke(); 

矩形

  1. // 填充矩形 
  2. function drawFillRect(ctx, x, y, width, height) { 
  3.     ctx.fillRect(x, y, width, height); 
  4. // 邊框矩形 
  5. function drawStrokeRect(ctx, x, y, width, height) { 
  6.     ctx.strokeRect( x, y, width, height); 

字符串

  1. // 填充字符串 
  2. function drawFillText(ctx, text, x, y) { 
  3.     ctx.fillText(text, x, y); 
  4. // 邊框字符串 
  5. function drawStrokeText(ctx, text, x, y) { 
  6.     ctx.strokeText(text, x, y); 

復雜圖形繪制——路徑

  1. // 利用路徑繪制 
  2. function drawFigureByPath(ctx) { 
  3.     ctx.beginPath(); 
  4.     ctx.moveTo(100, 400); 
  5.     ctx.lineTo(200, 450); 
  6.     ctx.lineTo(150, 480); 
  7.     ctx.closePath(); 
  8.     ctx.fill(); 

 

 


 

  1. function main() { 
  2.     const canvas = document.getElementById('canvasId'); 
  3.     const ctx = canvas.getContext('2d'); 
  4.     ctx.lineWidth = 2; 
  5.     ctx.strokeStyle = '#F00'
  6.     ctx.fillStyle = '#F00'
  7.     ctx.font = 'normal 50px 宋體'
  8.     drawLine(ctx, 50, 10, 150, 10); 
  9.     ctx.moveTo(150, 100); 
  10.     drawCircle(ctx, 100, 100, 50, 0, Math.PI); 
  11.     ctx.moveTo(300, 100); 
  12.     drawCircle(ctx, 250, 100, 50, 0, Math.PI * 2); 
  13.     ctx.moveTo(350, 150); 
  14.     drawBezierCurve(ctx, 200, 200, 450, 250, 300, 300); 
  15.     ctx.moveTo(50, 250); 
  16.     drawQuadraticCurve(ctx, 50, 400, 80, 400); 
  17.     drawFillRect(ctx, 100, 300, 100, 50); 
  18.     drawStrokeRect(ctx, 300, 300, 100, 50); 
  19.     drawFillText(ctx, 'I', 100, 400); 
  20.     drawStrokeText(ctx, 'I', 300, 400); 
  21.     drawFigureByPath(ctx); 

2.3 填充風格

利用canvas繪制圖形時勢必要上點顏料,通過設置fillStyle屬性即可設置對應的顏料,對于顏料值主要有以下四種:純顏色、線性漸變顏色、徑向漸變顏色、位圖。

純顏色

  1. function useColorFill(ctx) { 
  2.     ctx.save(); 
  3.     ctx.fillStyle = '#F00'
  4.     ctx.fillRect(10, 10, 100, 100); 
  5.     ctx.restore(); 

線性漸變顏色

  1. function useLinearGradientFill(ctx) { 
  2.     ctx.save(); 
  3.     const lg = ctx.createLinearGradient(110, 10, 210, 10); 
  4.     lg.addColorStop(0.2, '#F00'); 
  5.     lg.addColorStop(0.5, '#0F0'); 
  6.     lg.addColorStop(0.9, '#00F'); 
  7.     ctx.fillStyle = lg; 
  8.     ctx.fillRect(120, 10, 100, 100); 
  9.     ctx.restore(); 

徑向漸變顏色

  1. function useRadialGradientFill(ctx) { 
  2.     ctx.save(); 
  3.     const lg = ctx.createRadialGradient(260, 60, 10, 260, 60, 60); 
  4.     lg.addColorStop(0.2, '#F00'); 
  5.     lg.addColorStop(0.5, '#0F0'); 
  6.     lg.addColorStop(0.9, '#00F'); 
  7.     ctx.fillStyle = lg; 
  8.     ctx.fillRect(230, 10, 100, 100); 
  9.     ctx.restore(); 

位圖填充

  1. function useImageFill(ctx) { 
  2.     ctx.save(); 
  3.     const image = new Image(); 
  4.     image.src = 'https://dss2.baidu.com/6ONYsjip0QIZ8tyhnq/it/u=442547030,98631113&fm=58'
  5.     image.onload = function () { 
  6.         // 創建位圖填充 
  7.         const imgPattern = ctx.createPattern(image, 'repeat'); 
  8.         ctx.fillStyle = imgPattern; 
  9.         ctx.fillRect(340, 10, 100, 100); 
  10.         ctx.restore(); 
  11.     } 

 

2.4 臨時保存

用一只畫筆在畫某個美女時,忽然來了靈感需要畫另一個帥哥,這個時候又不想放棄這個美女,則就需要將當前畫美女的顏料、坐標等狀態進行暫存,等到畫完帥哥后恢復狀態進行美女的繪制。在canvas中可以通過save()和restore()方法實現,調用save()方法后將這一時刻的設置放到一個暫存棧中,然后可以放心的修改上下文,在需要繪制之前的上下文時,可以調用restore()方法。

  1. // 從左往右是依次繪制(中間為用新的樣式填充,最后一個是恢復到原來樣式填充) 
  2. function main() { 
  3.     const canvas = document.getElementById('canvasId'); 
  4.     const ctx = canvas.getContext('2d'); 
  5.     ctx.fillStyle = '#F00'
  6.     ctx.fillRect(10, 10, 100, 100); 
  7.     ctx.save(); 
  8.     ctx.fillStyle = '#0F0'
  9.     ctx.fillRect(150, 10, 100, 100); 
  10.     ctx.restore(); 
  11.     ctx.fillRect(290, 10, 100, 100); 

2.5 引入外部圖像

有的時候需要引入外部圖片,然后對外部圖片進行像素級別的處理,最后進行保存。

  1. 繪制圖像:drawImage
  2. 取得圖像數據:getIamgeData
  3. 將修改后的數據重新填充到Canvas中:putImageData
  4. 輸出位圖:toDataURL

  1. function main() { 
  2.     const canvas = document.getElementById('canvasId'); 
  3.     const ctx = canvas.getContext('2d'); 
  4.     const image = document.getElementById('image'); 
  5.     // 繪制圖像 
  6.     ctx.drawImage(image, 0, 0); 
  7.     // 獲取圖像數據 
  8.     const imageData = ctx.getImageData(0, 0, image.width, image.height); 
  9.     const data = imageData.data; 
  10.     for (let i = 0, len = data.length; i < len; i += 4) { 
  11.         const red = data[i]; 
  12.         const green = data[i + 1]; 
  13.         const blue = data[i + 2]; 
  14.  
  15.         const average = Math.floor((red + green + blue) / 3); 
  16.  
  17.         data[i] = average; 
  18.         data[i + 1] = average; 
  19.         data[i + 2] = average; 
  20.     } 
  21.  
  22.     imageData.data = data; 
  23.     ctx.putImageData(imageData, 0, 0); 
  24.     document.getElementById('result').src = canvas.toDataURL('image/png'); 

三、豬頭實戰

學習了這么多,就利用canvas繪制一個豬頭吧,畢竟每個程序員身邊肯定有一個陪伴自己的小胖豬,嘿嘿。


 

[[382751]]

 

 

  1. function main() { 
  2.     const canvas = document.getElementById('canvasId'); 
  3.     const ctx = canvas.getContext('2d'); 
  4.     ctx.lineWidth = 4; 
  5.     ctx.strokeStyle = '#000'
  6.     ctx.fillStyle = '#ffd8e1'
  7.     ctx.translate(260, 20); 
  8.     drawPigEar(ctx); 
  9.     ctx.save(); 
  10.     ctx.rotate(Math.PI / 2); 
  11.     drawPigEar(ctx); 
  12.     ctx.restore(); 
  13.     drawPigFace(ctx); 
  14.     ctx.save(); 
  15.     ctx.translate(-100, -100); 
  16.     drawPigEye(ctx); 
  17.     ctx.restore(); 
  18.     ctx.save(); 
  19.     ctx.translate(100, -100); 
  20.     drawPigEye(ctx); 
  21.     ctx.restore(); 
  22.     ctx.save(); 
  23.     ctx.translate(0, 60); 
  24.     drawPigNose(ctx); 
  25.     ctx.restore(); 
  26.  
  27. function drawPigEar(ctx) { 
  28.     ctx.save(); 
  29.     ctx.beginPath(); 
  30.     ctx.arc(-250, 0, 250, 0, -Math.PI / 2, true); 
  31.     ctx.arc(0, -250, 250, -Math.PI, Math.PI / 2, true); 
  32.     ctx.closePath(); 
  33.     ctx.fill(); 
  34.     ctx.stroke(); 
  35.     ctx.restore(); 
  36.  
  37. function drawPigFace(ctx) { 
  38.     ctx.save(); 
  39.     ctx.beginPath(); 
  40.     ctx.arc(0, 0, 250, 0, Math.PI * 2); 
  41.     ctx.fill(); 
  42.     ctx.stroke(); 
  43.     ctx.closePath(); 
  44.     ctx.restore(); 
  45.  
  46. function drawPigEye(ctx) { 
  47.     ctx.save(); 
  48.     ctx.fillStyle = '#000'
  49.     ctx.beginPath(); 
  50.     ctx.arc(0, 0, 20, 0, Math.PI * 2); 
  51.     ctx.closePath(); 
  52.     ctx.fill(); 
  53.     ctx.restore(); 
  54.  
  55. function drawPigNose(ctx) { 
  56.     ctx.save(); 
  57.     ctx.fillStyle = '#fca7aa'
  58.     ctx.beginPath(); 
  59.     ctx.ellipse(0, 0, 150, 100, 0, 0, Math.PI * 2); 
  60.     ctx.closePath(); 
  61.     ctx.fill(); 
  62.     ctx.stroke(); 
  63.     ctx.save(); 
  64.     ctx.translate(-60, 0); 
  65.     drawPigNostrils(ctx); 
  66.     ctx.restore(); 
  67.     ctx.save(); 
  68.     ctx.translate(60, 0); 
  69.     drawPigNostrils(ctx); 
  70.     ctx.restore(); 
  71.     ctx.restore(); 
  72.  
  73. function drawPigNostrils(ctx) { 
  74.     ctx.save(); 
  75.     ctx.fillStyle = '#b55151'
  76.     ctx.beginPath(); 
  77.     ctx.ellipse(0, 0, 40, 60, 0, 0, Math.PI * 2); 
  78.     ctx.closePath(); 
  79.     ctx.fill(); 
  80.     ctx.stroke(); 
  81.     ctx.restore(); 
  82.  
  83. main(); 

本文轉載自微信公眾號「執鳶者」,可以通過以下二維碼關注。轉載本文請聯系執鳶者公眾號。

 

責任編輯:武曉燕 來源: 執鳶者
相關推薦

2021-09-01 22:58:22

Canvas標簽

2017-06-26 09:15:39

SQL數據庫基礎

2012-02-29 00:49:06

Linux學習

2025-02-24 10:07:10

2013-06-06 13:42:48

OSPF入門配置

2022-06-10 08:17:52

HashMap鏈表紅黑樹

2022-10-20 08:02:29

ELFRTOSSymbol

2010-02-06 15:31:18

ibmdwAndroid

2009-07-22 14:55:16

ibmdwAndroid

2016-12-08 22:39:40

Android

2017-05-09 08:48:44

機器學習

2019-07-02 14:17:18

API網關網關流量

2024-07-03 10:09:29

2021-11-29 14:18:05

Nuxt3靜態Nuxt2

2021-12-12 18:15:06

Python并發編程

2022-09-02 15:11:18

開發工具

2024-02-26 08:52:20

Python傳遞函數參數參數傳遞類型

2017-01-03 16:57:58

2017-03-25 20:30:15

2010-11-08 10:20:18

點贊
收藏

51CTO技術棧公眾號

老司机午夜在线| 自拍偷拍校园春色| 日韩美女国产精品| 欧洲精品在线观看| 久久久久久久久久伊人| 头脑特工队2在线播放| 人人狠狠综合久久亚洲| 蜜臀久久99精品久久久久久宅男 | 日韩三区免费| 亚洲欧美日韩在线不卡| 裸模一区二区三区免费| 97在线视频人妻无码| 中文一区二区| 久久综合伊人77777蜜臀| 国产又粗又长又爽| 精品视频91| 欧美三级中文字幕在线观看| 屁屁影院ccyy国产第一页| 九色在线播放| 国产a级毛片一区| 国产日韩精品在线观看| 偷偷操不一样的久久| 欧美一区亚洲| 久久精品91久久久久久再现| 亚洲精品视频久久久| av毛片精品| 91精品国产综合久久国产大片| 那种视频在线观看| av影院在线免费观看| 亚洲女性喷水在线观看一区| 日韩中文一区二区三区| 国产精品国产高清国产| 国产成人免费在线| 成人亚洲激情网| 亚洲最大成人在线视频| 久久久久99| 欧美亚洲另类在线| 日韩成人一区二区三区| 在线播放精品| 久久久综合免费视频| 成年人av电影| 欧美精品一线| 欧美日韩xxx| 欧美日韩在线观看免费| 亚洲精品一区二区妖精| 一区二区av在线| 亚洲第一综合网| 国产精品一区二区av交换| 亚洲韩国青草视频| 亚洲视频在线播放免费| 国产精品巨作av| 亚洲国产精品成人一区二区| 婷婷五月精品中文字幕| 国产精品15p| 亚洲第一精品电影| 亚洲制服丝袜在线播放| 麻豆一区二区麻豆免费观看| 亚洲第一av网| 9.1成人看片免费版| 精品国产91乱码一区二区三区四区 | 三级网站在线看| 成人国产精品视频| 久久精品日产第一区二区三区精品版 | 午夜精品视频在线观看一区二区| 黄色片在线看| 国产精品久久久久aaaa| 色呦呦网站入口| 在线黄色网页| 五月天视频一区| 成年人黄色片视频| 欧美天堂一区| 欧美videossexotv100| 人妻av一区二区| 色橹橹欧美在线观看视频高清| 精品五月天久久| 日本美女bbw| 91精品啪在线观看国产81旧版| 蜜月aⅴ免费一区二区三区| 久久久无码精品亚洲国产| 99精品视频免费观看| 欧美综合第一页| 一区二区视频网| 国产高清精品网站| 欧美大陆一区二区| av中文字幕一区二区三区| 亚洲欧美日韩国产综合| 国产深夜男女无套内射| 97人人做人人爽香蕉精品| 日韩欧美自拍偷拍| www.久久av| 99久久精品国产亚洲精品| 久久69精品久久久久久久电影好 | 久久久视频6r| 欧美黄色一级视频| 日本精品一区二区三区在线| 一区二区三区免费在线| 丁香另类激情小说| 亚洲欧美日韩在线综合 | 亚洲一二三四在线观看| 久久精品网站视频| 51vv免费精品视频一区二区| 亚洲午夜未删减在线观看 | 欧美午夜电影一区| 性感美女一区二区三区| 欧美日韩一二| 2019国产精品自在线拍国产不卡| 在线中文字幕网站| 91小视频免费看| 日韩中文字幕亚洲精品欧美| 亚洲www啪成人一区二区| 日韩精品中文字幕一区二区三区| 中文字幕第20页| 亚洲精品韩国| 91超碰rencao97精品| 国产系列在线观看| 欧美日韩黄色大片| www.黄色网| 国产精品精品| 国产精品免费看久久久香蕉| 性xxxxbbbb| 一区二区三区四区av| 99re精彩视频| 欧美日韩国产在线观看网站| 97精品国产97久久久久久春色| 国产伦精品一区二区三区四区| 久久免费视频一区| 国产午夜福利在线播放| 亚洲码欧美码一区二区三区| 在线播放精品一区二区三区| 国产精品人人人人| 成人黄色大片在线观看 | 免费在线成人av| av中文在线资源库| 精品久久久久一区| 免费网站看av| 国产suv精品一区二区三区| 麻豆中文字幕在线观看| 国产麻豆一区| 色婷婷综合成人av| 国产有码在线观看| 亚洲同性同志一二三专区| 亚洲第一狼人区| 精品高清久久| 国产欧美日韩中文字幕| av网站在线免费观看| 色av一区二区| 久久午夜福利电影| 日本aⅴ亚洲精品中文乱码| 欧美一区二区在线| 91tv亚洲精品香蕉国产一区| 国产小视频国产精品| 天天综合久久综合| 国产精品美女视频| 91aaa精品| 国产一区日韩欧美| 国产一区在线免费观看| 无码小电影在线观看网站免费 | 在线观看免费高清完整| 欧美日韩视频在线一区二区| 多男操一女视频| 国产精品伊人色| 日本中文字幕在线视频观看| 99国产精品免费网站| 91精品国产九九九久久久亚洲| 日韩一级片免费看| 日本二三区不卡| 国产一区二区三区视频播放| 久久国产福利国产秒拍| 国产亚洲精品久久久久久久| 久久精品亚洲成在人线av网址| 2019中文在线观看| 在线中文资源天堂| 日韩一级大片在线观看| 圆产精品久久久久久久久久久| 久久久综合精品| 中文字幕成人免费视频| 欧美久久九九| 日本精品二区| 欧美欧美在线| 日本精品久久久久久久| 91在线观看| 精品国产自在久精品国产| 97高清免费视频| 熟女少妇内射日韩亚洲| 精品无人区卡一卡二卡三乱码免费卡 | 一区二区三区精品视频在线| 97精品人妻一区二区三区蜜桃| 久久xxxx精品视频| 香蕉视频在线网址| 露出调教综合另类| 国产一区二区色| 欧美日韩在线观看首页| 日韩色av导航| 天堂视频中文在线| 91精品中文字幕一区二区三区| 日本亚洲色大成网站www久久| 国产亚洲欧美中文| 最新国产精品自拍| 久久er精品视频| 精品国产一二三四区| 一本一本久久a久久综合精品| 国产一区二区久久久| 欧美一区二区三区婷婷| 欧美在线视频导航| 污网站在线免费看| 日韩专区在线播放| 黄色片免费在线| 亚洲电影第1页| 国产v在线观看| 欧美日韩中文国产| 成人午夜淫片100集| 亚洲午夜羞羞片| 韩国一级黄色录像| 国产午夜精品一区二区| 国产黑丝一区二区| 国产不卡在线一区| а 天堂 在线| 蜜桃av噜噜一区| 亚洲精品乱码久久久久久自慰| 国产主播精品| 欧美精品自拍偷拍动漫精品| 激情六月丁香婷婷| 黄色日韩精品| 欧美aaa在线观看| 欧美日韩在线播放视频| 久久国产精品免费一区| 超碰成人福利| 翡翠波斯猫1977年美国| 久久在线观看| 91在线免费观看网站| 福利精品在线| 日韩国产欧美精品一区二区三区| 日本少妇一区二区三区| 日韩精品欧美成人高清一区二区| 99视频在线免费播放| 精品91在线| 欧美乱做爰xxxⅹ久久久| 91精品国偷自产在线电影 | 网站黄在线观看| 精品国产一区二区亚洲人成毛片| 国产免费高清视频| 在线不卡a资源高清| 波多野结衣电车痴汉| 色综合久久99| 91青青草视频| 欧美私人免费视频| 一级aaaa毛片| 91精品国产91久久久久久一区二区 | 欧美夫妇交换xxx| 成人免费视频视频在线观看免费 | av片中文字幕| 可以看av的网站久久看| 无码内射中文字幕岛国片| 久久亚洲不卡| 国产高清视频网站| 极品少妇xxxx精品少妇| www.成年人| 国产91精品久久久久久久网曝门| 午夜影院福利社| 91在线免费播放| 成人免费无遮挡无码黄漫视频| 国产视频一区二区在线| 最新日韩免费视频| 亚洲女性喷水在线观看一区| 久久久香蕉视频| 动漫精品一区二区| 日韩不卡高清视频| 91精品国产综合久久香蕉麻豆| 国产婷婷在线视频| 日韩极品精品视频免费观看| 毛片网站在线观看| 热久久久久久| 97久久精品人人澡人人爽缅北| 丝袜诱惑一区二区| 国产精品日韩在线| 精品欧美视频| 免费成人av网站| 99久久国产综合精品成人影院| 日韩 欧美 自拍| 99av国产精品欲麻豆| 日本888xxxx| 国产98色在线|日韩| 久久国产精品影院| 亚洲视频中文字幕| 久久草视频在线| 欧美日韩一级视频| 人人妻人人玩人人澡人人爽| 一个人www欧美| 欧美另类tv| 国产精品人成电影| 91精品短视频| 日韩欧美一区二区三区四区五区| 日韩欧美中字| 啊啊啊一区二区| 黄色精品一二区| 中文乱码人妻一区二区三区视频| 久久久久国产精品麻豆| 欧美片一区二区| 日本高清视频一区二区| 亚洲av无码乱码国产麻豆 | 免费av毛片在线看| 97色在线观看| 玖玖玖视频精品| 水蜜桃亚洲精品| av成人激情| 性生交大片免费看l| 国产欧美日韩激情| 国产一级特黄a高潮片| 欧美日本视频在线| 欧美91精品久久久久国产性生爱| 欧美美最猛性xxxxxx| 激情小说亚洲| 麻豆亚洲一区| 亚洲激情偷拍| 91香蕉视频在线观看视频| 国产日韩欧美亚洲| 久久av在线看| 少妇淫片在线影院| 国产福利久久| 欧美 亚欧 日韩视频在线 | 国产在线视频99| 69堂国产成人免费视频| 国产69久久| 国产成人精品日本亚洲| 欧美顶级毛片在线播放| 欧美日韩激情四射| 黄色小说综合网站| 国产精品视频一区二区三| 欧美色网站导航| 国产黄色片在线观看| 日本人成精品视频在线| 日本午夜精品久久久| 日韩精品福利片午夜免费观看| 久久av老司机精品网站导航| 国产综合精品久久久久成人av| 精品福利在线观看| 欧洲av在线播放| 欧美精品xxx| 国产毛片久久久| 婷婷无套内射影院| www.亚洲人| 91在线看视频| 精品无人国产偷自产在线| 麻豆mv在线看| 蜜桃传媒一区二区| 亚洲欧美日韩国产综合精品二区 | 免费精品国产| 蜜臀久久99精品久久久酒店新书 | 日本一级片免费| 91精品国产综合久久久久| 超碰公开在线| 国产成人av一区二区三区| 亚洲一本视频| 少妇精品一区二区| 色999日韩国产欧美一区二区| 国产三级电影在线| 国产精品一区二区性色av| 91久久高清国语自产拍| 日本少妇xxx| 岛国av午夜精品| 北岛玲一区二区三区| 国产欧美日韩中文字幕| 欧美日本国产| 在线天堂www在线国语对白| 精品久久久久久国产91| 国产在线黄色| 91久久精品国产91性色| 尤物精品在线| 一区二区三区久久久久| 欧美精品v日韩精品v韩国精品v| 成人黄色在线电影| 精品在线视频一区二区| 日韩激情视频在线观看| 91日韩中文字幕| 亚洲精品国产suv| 美女视频一区| 加勒比成人在线| 国产农村妇女毛片精品久久麻豆 | 亚洲精品国产精品久久清纯直播 | 亚洲一区二区日本| 西西裸体人体做爰大胆久久久| 亚洲综合欧美综合| 欧美一级在线免费| 制服丝袜专区在线| 天堂v在线视频| 99re在线精品| 91麻豆成人精品国产| 91国内在线视频| 欧美mv日韩| av在线网站观看| 欧美一级免费大片| 欧美黑人疯狂性受xxxxx野外| 一区二区三区日韩视频| 91污在线观看| 国产精品视频第一页| 日本久久久a级免费| 亚洲一区欧美| 欧美激情视频二区| 日韩高清有码在线| 亚洲一区 二区|