嫩草影院久久99_老司机午夜网站国内精品久久久久久久久_久久夜色精品国产_国产一级做a爰片久久毛片

有趣的Canvas,你值得擁有!

2020-5-3    seo達人

Canvas 是 HTML5 提供的一個用于展示繪圖效果的標簽. Canvas 原意為畫布, 在 HTML 頁面中用于展示繪圖效果. 最早 Canvas 是蘋果提出的一個方案, 今天已經在大多數瀏覽器中實現。


canvas 的使用領域


游戲

大數據可視化數據

banner 廣告

多媒體

模擬仿真

遠程操作

圖形編輯

判斷瀏覽器是否支持 canvas 標簽


var canvas = document.getElementById('canvas')

if (canvas.getContext) {

console.log('你的瀏覽器支持Canvas!')

} else {

console.log('你的瀏覽器不支持Canvas!')

}

canvas 的基本用法

1、使用 canvas 標簽, 即可在頁面中開辟一格區域,可以設置其寬高,寬高為 300 和 150


<canvas></canvas>

2、獲取 dom 元素 canvas


canvas 本身不能繪圖. 是使用 JavaScript 來完成繪圖. canvas 對象提供了各種繪圖用的 api。


var cas = document.querySelector('canvas')

3、通過 cas 獲取上下文對象(畫布對象!)


var ctx = cas.getContext('2d')

4、通過 ctx 開始畫畫(設置起點 設置終點 連線-描邊 )


ctx.moveTo(10, 10)

ctx.lineTo(100, 100)

ctx.stroke()

繪制線條

設置開始位置: context.moveTo( x, y )

設置終點位置: context.lineTo( x, y )

描邊繪制: context.stroke()

填充繪制: context.fill()

閉合路徑: context.closePath()

canvas 還可以設置線條的相關屬性,如下:


CanvasRenderingContext2D.lineWidth 設置線寬.

CanvasRenderingContext2D.strokeStyle 設置線條顏色.

CanvasRenderingContext2D.lineCap 設置線末端類型,'butt'( 默認 ), 'round', 'square'.

CanvasRenderingContext2D.lineJoin 設置相交線的拐點, 'miter'(默認),'round', 'bevel',

CanvasRenderingContext2D.getLineDash() 獲得線段樣式數組.

CanvasRenderingContext2D.setLineDash() 設置線段樣式.

CanvasRenderingContext2D.lineDashOffset 繪制線段偏移量.

封裝一個畫矩形的方法


function myRect(ctxTmp, x, y, w, h) {

ctxTmp.moveTo(x, y)

ctxTmp.lineTo(x + w, y)

ctxTmp.lineTo(x + w, y + h)

ctxTmp.lineTo(x, y + h)

ctxTmp.lineTo(x, y)

ctxTmp.stroke()

}


var cas = document.querySelector('canvas')

var ctx = cas.getContext('2d')

myRect(ctx, 50, 50, 200, 200)

繪制矩形

fillRect( x , y , width , height) 填充以(x,y)為起點寬高分別為 width、height 的矩形 默認為黑色

stokeRect( x , y , width , height) 繪制一個空心以(x,y)為起點寬高分別為 width、height 的矩形

clearRect( x, y , width , height ) 清除以(x,y)為起點寬高分別為 width、height 的矩形 為透明

繪制圓弧

繪制圓弧的方法有


CanvasRenderingContext2D.arc()

CanvasRenderingContext2D.arcTo()

6 個參數: x,y(圓心的坐標),半徑,起始的弧度(不是角度 deg),結束的弧度,(bool 設置方向 ! )


var cas = document.querySelector('canvas')

var ctx = cas.getContext('2d')


ctx.arc(100, 100, 100, 0, degToArc(360))

ctx.stroke()


// 角度轉弧度

function degToArc(num) {

return (Math.PI / 180) * num

}

繪制扇形


var cas = document.querySelector('canvas')

var ctx = cas.getContext('2d')


ctx.arc(300, 300, 200, degToArc(125), degToArc(300))


// 自動連回原點

ctx.closePath()

ctx.stroke()


function degToArc(num) {

return (Math.PI / 180) * num

}

制作畫筆

聲明一個變量作為標識

鼠標按下的時候,記錄起點位置

鼠標移動的時候,開始描繪并連線

鼠標抬起的時候,關閉開關

點擊查看效果圖


var cas = document.querySelector('canvas')

var ctx = cas.getContext('2d')


var isDraw = false

// 鼠標按下事件

cas.addEventListener('mousedown', function () {

isDraw = true

ctx.beginPath()

})


// 鼠標移動事件

cas.addEventListener('mousemove', function (e) {

if (!isDraw) {

// 沒有按下

return

}

// 獲取相對于容器內的坐標

var x = e.offsetX

var y = e.offsetY

ctx.lineTo(x, y)

ctx.stroke()

})


cas.addEventListener('mouseup', function () {

// 關閉開關了!

isDraw = false

})

手動涂擦

原理和畫布相似,只不過用的是clearRect()方法。


點擊查看效果圖


var cas = document.querySelector('canvas')

var ctx = cas.getContext('2d')


ctx.fillRect(0, 0, 600, 600)


// 開關

var isClear = false


cas.addEventListener('mousedown', function () {

isClear = true

})


cas.addEventListener('mousemove', function (e) {

if (!isClear) {

return

}

var x = e.offsetX

var y = e.offsetY

var w = 20

var h = 20

ctx.clearRect(x, y, w, h)

})


cas.addEventListener('mouseup', function () {

isClear = false

})

刮刮樂

首先需要設置獎品和畫布,將畫布置于圖片上方蓋住,

隨機設置生成獎品。

當手觸摸移動的時候,可以擦除部分畫布,露出獎品區。

點擊查看效果圖


<div>

<img src="./images/2.jpg" alt="" />

<canvas width="600" height="600"></canvas>

</div>

css


img {

width: 600px;

height: 600px;

position: absolute;

top: 10%;

left: 30%;

}


canvas {

width: 600px;

height: 600px;

position: absolute;

top: 10%;

left: 30%;

border: 1px solid #000;

}

js


var cas = document.querySelector('canvas')

var ctx = cas.getContext('2d')

var img = document.querySelector('img')

// 加一個遮罩層

ctx.fillStyle = '#ccc'

ctx.fillRect(0, 0, cas.width, cas.height)

setImgUrl()

// 開關

var isClear = false

cas.addEventListener('mousedown', function () {

isClear = true

})

cas.addEventListener('mousemove', function (e) {

if (!isClear) {

return

}

var x = e.offsetX

var y = e.offsetY

ctx.clearRect(x, y, 30, 30)

})

cas.addEventListener('mouseup', function () {

isClear = false

})


function setImgUrl() {

var arr = ['./images/1.jpg', './images/2.jpg', './images/3.jpg', './images/4.jpg']

// 0-3

var random = Math.round(Math.random() * 3)

img.src = arr[random]

}

更多demo,請查看 github.com/Michael-lzg…


日歷

鏈接

個人資料

藍藍設計的小編 http://m.sdgs6788.com

存檔

嫩草影院久久99_老司机午夜网站国内精品久久久久久久久_久久夜色精品国产_国产一级做a爰片久久毛片
<em id="09ttv"></em>
    <sup id="09ttv"><pre id="09ttv"></pre></sup>
    <dd id="09ttv"></dd>

        • 99成人免费视频| 99综合精品| 一区二区免费在线观看| 在线观看欧美精品| 精品69视频一区二区三区| 国产日韩在线看片| 激情小说亚洲一区| 91久久午夜| 亚洲午夜小视频| 欧美一区=区| 久久视频国产精品免费视频在线| 久久久www成人免费毛片麻豆| 久久久www成人免费精品| 久久综合影视| 91久久精品美女| 亚洲狠狠婷婷| 亚洲一区二区视频在线观看| 欧美一区二区三区在线播放| 久久久久国产精品一区| 狠狠操狠狠色综合网| 一区二区三区在线不卡| 亚洲裸体视频| 久久都是精品| 亚洲国产天堂久久综合| 亚洲一级电影| 欧美激情导航| 国产裸体写真av一区二区| 在线成人激情黄色| 亚洲一二区在线| 免费国产一区二区| 亚洲一区二区免费视频| 久久综合九色综合欧美狠狠| 欧美日韩亚洲视频| 一区二区三区在线视频免费观看 | 欧美国产第二页| 一区二区三区视频免费在线观看| 久久视频精品在线| 国产乱码精品一区二区三区av| 91久久久久久国产精品| 久久成人18免费观看| 亚洲精品一二三| 免费黄网站欧美| 韩国成人精品a∨在线观看| 亚洲欧美制服中文字幕| 亚洲精品中文字幕在线| 免费亚洲一区二区| 亚洲电影自拍| 美国十次了思思久久精品导航| 亚洲主播在线观看| 欧美日韩免费网站| 日韩亚洲精品电影| 亚洲国产精品www| 久热精品视频在线观看一区| 韩国av一区二区| 久久九九热免费视频| 亚洲欧美中文日韩在线| 国产精品一二一区| 久久9热精品视频| 欧美一区二区三区日韩| 国产亚洲精品高潮| 久久资源av| 麻豆av一区二区三区| 在线观看成人av电影| 老司机aⅴ在线精品导航| 欧美在线免费观看亚洲| 狠狠色狠狠色综合系列| 免费观看在线综合| 欧美高清在线一区| 一区二区三区视频在线看| 日韩视频免费| 国产精品乱码人人做人人爱| 午夜精品在线观看| 久久福利影视| 亚洲日本国产| 国产精品99久久久久久久女警 | 国产精品综合网站| 久久久国产视频91| 久久看片网站| 99国产一区| 一区二区三区精品视频在线观看| 欧美特黄一级大片| 久久精品二区三区| 免费欧美日韩国产三级电影| 日韩视频专区| 亚洲永久免费| 欧美一区二区三区在线免费观看| 国产亚洲一区二区三区在线播放| 久久综合色影院| 欧美极品在线播放| 亚洲欧美日韩精品一区二区| 欧美一区二区三区视频免费播放| 在线播放中文字幕一区| 亚洲乱亚洲高清| 狠久久av成人天堂| 一本久久综合| 亚洲福利视频二区| 一区二区高清在线| 在线日韩电影| 亚洲综合欧美日韩| 亚洲美女av黄| 久久久久国内| 午夜精品在线观看| 欧美激情网友自拍| 久久久成人精品| 欧美视频不卡| 亚洲成色777777女色窝| 国产午夜精品一区二区三区欧美 | 欧美一进一出视频| 欧美国产精品| 久久久不卡网国产精品一区| 欧美日韩亚洲一区二区三区在线观看| 久久精品中文字幕免费mv| 欧美日韩亚洲一区| 欧美a级大片| 国产一区二区三区电影在线观看| 亚洲人成网站影音先锋播放| 伊人成人开心激情综合网| 亚洲综合丁香| 亚洲欧美日韩综合国产aⅴ| 欧美精品激情| 亚洲国产成人tv| 亚洲国产成人精品女人久久久 | 欧美中文在线免费| 国产精品白丝av嫩草影院| 欧美激情亚洲另类| 在线精品福利| 久久青草久久| 农村妇女精品| 亚洲国产精品女人久久久| 久久久久久久久久久一区 | 亚洲欧美另类在线观看| 欧美福利电影网| 久久综合精品国产一区二区三区| 国产精品入口福利| 亚洲天堂网在线观看| 亚洲天堂第二页| 欧美视频一区二区在线观看| 亚洲免费电影在线| 亚洲一级片在线看| 欧美系列亚洲系列| 亚洲系列中文字幕| 欧美一区二区观看视频| 国产精品一二三四区| 欧美一区三区三区高中清蜜桃| 欧美在线看片| 精品成人一区二区三区| 蜜桃av一区二区三区| 亚洲国产一成人久久精品| 亚洲精品护士| 欧美午夜精品一区| 亚洲欧美第一页| 久久中文欧美| aa级大片欧美| 国产精品推荐精品| 欧美在线播放视频| 男人插女人欧美| av成人动漫| 国产麻豆精品theporn| 久久国产精品久久久久久| 欧美a级片网站| 亚洲少妇自拍| 国产一区二区高清不卡| 毛片一区二区三区| 一区二区三区免费在线观看| 久久精品电影| 日韩一级免费观看| 国产精品一区视频| 麻豆成人综合网| 欧美国产视频在线观看| 99re热这里只有精品免费视频| 国产精品国产精品国产专区不蜜| 欧美在线1区| 日韩手机在线导航| 久久夜色精品国产欧美乱极品| 亚洲免费成人| 国内精品久久久久影院薰衣草| 欧美高清你懂得| 午夜国产精品视频| 亚洲国产精品999| 欧美一区二区播放| 亚洲麻豆av| 在线看片第一页欧美| 国产精品v欧美精品v日韩| 久久亚洲图片| 久久久久久久综合狠狠综合| 亚洲免费av网站| 黑人一区二区三区四区五区| 欧美激情片在线观看| 久久精品欧美| 亚洲免费人成在线视频观看| 亚洲国产天堂久久综合网| 欧美在线亚洲综合一区| 一区二区三区四区五区精品视频 | 亚洲片在线观看| 狼狼综合久久久久综合网| 亚洲欧美精品伊人久久| 亚洲精品日韩在线观看| 一区二区三区在线免费视频| 国产精品手机视频| 99精品黄色片免费大全|