欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

canvashtml5,canvas h5

怎樣在html5中添加canvas標(biāo)簽

canvas 標(biāo)簽是 HTML 5 中的新標(biāo)簽。

網(wǎng)站設(shè)計制作過程拒絕使用模板建站;使用PHP+MYSQL原生開發(fā)可交付網(wǎng)站源代碼;符合網(wǎng)站優(yōu)化排名的后臺管理系統(tǒng);網(wǎng)站設(shè)計、做網(wǎng)站收費合理;免費進行網(wǎng)站備案等企業(yè)網(wǎng)站建設(shè)一條龍服務(wù).我們是一家持續(xù)穩(wěn)定運營了10多年的創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司。

定義和用法

canvas 標(biāo)簽定義圖形,比如圖表和其他圖像。

canvas 標(biāo)簽只是圖形容器,您必須使用腳本來繪制圖形。

實例

通過 canvas 元素來顯示一個紅色的矩形:

!DOCTYPE?HTML

html

head

script?type="text/javascript"

var?canvas=document.getElementById('myCanvas');

var?ctx=canvas.getContext('24d');

ctx.fillStyle='#FF0000';

ctx.fillRect(0,0,80,100);

/script

/head

body

canvas?id="myCanvas"your?browser?does?not?support?the?canvas?tag?/canvas

/body

/html

HTML5 - Canvas

HTML5 的 canvas 元素使用 JavaScript 在網(wǎng)頁上繪制圖像。

在使用 canvas 繪制圖像時,canvas 畫布左上角的坐標(biāo)為(0, 0)

注意:canvas 畫布大小不可通過 css 來改變,只能通過屬性方式設(shè)置,否則可能出現(xiàn)失幀的情況(當(dāng)使用 css 方式改變 canvas 畫布大小時,只是 cavas 標(biāo)簽的大小改變了,正真的繪圖區(qū)域大小并沒有改變,所以出現(xiàn)了失幀的情況)。

示例:

示例:

示例:

示例:

示例:

示例:

示例:

1)參數(shù)說明:

參數(shù) x:矩形左上角的 x 坐標(biāo)。

參數(shù) y:矩形左上角的 y 坐標(biāo)。

參數(shù) width:矩形的寬度,以像素計。

參數(shù) height:矩形的高度,以像素計。

2) 注意事項:

context.rect(x, y, width, height); 只是創(chuàng)建了矩形,并沒有繪制出來。因此,創(chuàng)建完成后需使用 context.stroke(); 來繪制。

3)示例:

1)參數(shù)說明:

參數(shù) x:矩形左上角的 x 坐標(biāo)。

參數(shù) y:矩形左上角的 y 坐標(biāo)。

參數(shù) width:矩形的寬度,以像素計。

參數(shù) height:矩形的高度,以像素計。

2)默認(rèn)的填充顏色是黑色??梢允褂?fillStyle 屬性來設(shè)置用于填充繪圖的顏色、漸變或模式。

3)示例:

1)參數(shù)說明:

參數(shù) x:矩形左上角的 x 坐標(biāo)。

參數(shù) y:矩形左上角的 y 坐標(biāo)。

參數(shù) width:矩形的寬度,以像素計。

參數(shù) height:矩形的高度,以像素計。

2)筆觸的默認(rèn)顏色是黑色。

3)可以使用 strokeStyle 屬性來設(shè)置筆觸的顏色、漸變或模式。

4)示例:

1)參數(shù)說明:

參數(shù) x:要清除的矩形左上角的 x 坐標(biāo)。

參數(shù) y:要清除的矩形左上角的 y 坐標(biāo)。

參數(shù) width:要清除的矩形的寬度,以像素計。

參數(shù) height:要清除的矩形的高度,以像素計。

小技巧:

當(dāng) x = 0,y = 0,width = canvas.width,height = canvas.height 時,則可以清除畫布上的矩形

2)示例:

1)參數(shù)說明:

參數(shù) x:圓中心的 x 坐標(biāo)。

參數(shù) y:圓中心的 y 坐標(biāo)。

參數(shù) r:圓的半徑。

參數(shù) sAngle:起始角弧度(圓的三點鐘位置是0度)。

參數(shù) eAngle:結(jié)束角弧度(圓的三點鐘位置是0度)。

參數(shù) counterclockwise:規(guī)定逆時針還是順時針繪圖。f'alse = 順時針,true = 逆時針。

2) 角度和弧度的關(guān)系:角度/弧度 = 180/pi

3)創(chuàng)建完圓弧后需使用 context.stroke(); 繪制創(chuàng)建的圓弧。

4)示例:繪制一個圓

5)示例:繪制圓上任意一點

圓上任意一點坐標(biāo):x = ox + r*cos(弧度),y = oy + r*cos(弧度)

ox:圓心的 x 坐標(biāo)。

oy:圓心的 y 坐標(biāo)。

r:圓的半徑。

2)設(shè)置字體水平對齊方式

2)設(shè)置字體垂直對齊方式

textBaseline 屬性在不同的瀏覽器上效果不同,特別是使用 "hanging" 或 "ideographic" 時。

3)設(shè)置文字陰影效果

1)參數(shù)說明:

參數(shù) text:文本內(nèi)容

參數(shù) x:開始繪制文本的 x 坐標(biāo)位置(相對于畫布)。

參數(shù) y:開始繪制文本的 y 坐標(biāo)位置(相對于畫布)。

2)默認(rèn)的填充顏色是黑色??梢允褂?fillStyle 屬性來設(shè)置用于填充繪圖的顏色、漸變或模式。

3)示例:

1)參數(shù)說明:

參數(shù) text:文本內(nèi)容

參數(shù) x:開始繪制文本的 x 坐標(biāo)位置(相對于畫布)。

參數(shù) y:開始繪制文本的 y 坐標(biāo)位置(相對于畫布)。

2)默認(rèn)的筆觸顏色是黑色??梢允褂?strokeStyle 屬性來設(shè)置筆觸的顏色、漸變或模式。

3)示例:

1)參數(shù)說明:

參數(shù) img:規(guī)定要使用的圖像。

參數(shù) x:在畫布上放置圖像的 x 坐標(biāo)位置。

參數(shù) y:在畫布上放置圖像的 y 坐標(biāo)位置。

2)當(dāng)圖像的大小超出畫布的大小時,超出的部分將不會被顯示出來。

3)示例:

1)參數(shù)說明:

參數(shù) img:規(guī)定要使用的圖像。

參數(shù) x:在畫布上放置圖像的 x 坐標(biāo)位置。

參數(shù) y:在畫布上放置圖像的 y 坐標(biāo)位置。

參數(shù) width:要使用的圖像的寬度(伸展或縮小圖像)。

參數(shù) height:要使用的圖像的高度(伸展或縮小圖像)。

2)因保持 width/height = img.width/img.height,否則繪制后的圖片會失幀。

3)示例:

1)參數(shù)說明:

參數(shù) img:規(guī)定要使用的圖像。

參數(shù) sx:從圖像的 sx 坐標(biāo)位置開始剪切。

參數(shù) sy:從圖像的 sy 坐標(biāo)位置開始剪切。

參數(shù) swidth:剪切的寬度。

參數(shù) sheight:剪切的高度。

參數(shù) x:在畫布上放置圖像的 x 坐標(biāo)位置。

參數(shù) y:在畫布上放置圖像的 y 坐標(biāo)位置。

參數(shù) width:要使用的圖像的寬度(伸展或縮小圖像)。

參數(shù) height:要使用的圖像的高度(伸展或縮小圖像)。

2)因保持 width/height = swidth/sheight,否則繪制后的圖片會失幀。

3)示例:

stop:介于 0.0 與 1.0 之間的值,表示漸變中開始(0.0)與結(jié)束(1.0)之間的位置。

color:顏色。

示例:

HTML5中Canvas的事件處理介紹

DOM是Web前端領(lǐng)域非常重要的組成部分,不僅在處理HTML元素時會用到DOM,圖形編程也同樣會用到。比如SVG繪圖,各種圖形都是以DOM節(jié)點的形式插入到頁面中,這就意味著可以使用DOM方法對圖形進行操作。比如有一個 元素,可以直接用jquery增加click事件$('#p1').click(function(){…})"。然而這種DOM處理方法在HTML5的Canvas里不再適用,Canvas使用的是另外一套機制,無論在Canvas上繪制多少圖形,Canvas都是一個整體,圖形本身實際都是Canvas的一部分,不可單獨獲取,所以也就無法直接給某個圖形增加JavaScript事件。

Canvas的限制

在Canvas里,所有圖形都繪制在幀上,繪制方法不會將繪制好的圖形元素作為一個返回值輸出,js也無法獲取到已經(jīng)繪制好的圖形元素。比如:

代碼如下:

cvs = document.getElementById('mycanvas');

ctx = canvas.getContext('2d');

theRect = ctx.rect(10, 10, 100, 100);

ctx.stroke();

console.log(theRect); //undefined

這段代碼在canvas標(biāo)簽里繪制了一個矩形,首先可以看到繪制圖形的rect方法沒有返回值。如果打開瀏覽器的開發(fā)者工具,還可以看到canvas標(biāo)簽內(nèi)部沒有增加任何內(nèi)容,而在js里獲取到的canvas元素以及當(dāng)前的上下文,也都沒有任何表示新增圖形的內(nèi)容。

所以,前端常用的dom方法在canvas里是不適用的。比如點擊上面Canvas里的矩形,實際點擊的是整個Canvas元素。

給Canvas元素綁定事件

由于事件只能達到Canvas元素這一層,所以,如果想進一步深入,識別點擊發(fā)生在Canvas內(nèi)部的`哪一個圖形上,就需要增加代碼來進行處理?;舅悸肥牵航oCanvas元素綁定事件,當(dāng)事件發(fā)生時,檢查事件對象的位置,然后檢查哪些圖形覆蓋了該位置。比如上面的例子里畫過一個矩形,該矩形覆蓋x軸10-110、y軸10-110的范圍。只要鼠標(biāo)點擊在這個范圍里,就可以視為點擊了該矩形,也就可以手動觸發(fā)矩形需要處理的點擊事件。思路其實比較簡單,但是實現(xiàn)起來還是稍微有點復(fù)雜。不僅要考慮這個判斷過程的效率,有些地方還需要重新判斷事件類型,設(shè)置要重新定義一個Canvas內(nèi)部的捕獲和冒泡機制。

首先要做的,是給Canvas元素綁定事件,比如Canvas內(nèi)部某個圖形要綁定點擊事件,就需要通過Canvas元素代理該事件:

代碼如下:

cvs = document.getElementById('mycanvas');

cvs.addEventListener('click', function(e){

//...

}, false);

接下來需要判斷事件對象發(fā)生的位置,事件對象e的layerX和layerY屬性表示Canvas內(nèi)部坐標(biāo)系中的坐標(biāo)。但是這個屬性O(shè)pera不支持,Safari也打算移除,所以要做一些兼容寫法:

代碼如下:

function getEventPosition(ev){

var x, y;

if (ev.layerX || ev.layerX == 0) {

x = ev.layerX;

y = ev.layerY;

} else if (ev.offsetX || ev.offsetX == 0) { // Opera

x = ev.offsetX;

y = ev.offsetY;

}

return {x: x, y: y};

}

//注:使用上面這個函數(shù),需要給Canvas元素的position設(shè)為absolute。

現(xiàn)在有了事件對象的坐標(biāo)位置,下面就要判斷Canvas里的圖形,有哪些覆蓋了這個坐標(biāo)。

isPointInPath方法

Canvas的isPointInPath方法可以判斷當(dāng)前上下文的圖形是否覆蓋了某個坐標(biāo),比如:

代碼如下:

cvs = document.getElementById('mycanvas');

ctx = canvas.getContext('2d');

ctx.rect(10, 10, 100, 100);

ctx.stroke();

ctx.isPointInPath(50, 50); //true

ctx.isPointInPath(5, 5); //false

接下來增加一個事件判斷,就可以判斷一個點擊事件是否發(fā)生在矩形上:

代碼如下:

cvs.addEventListener('click', function(e){

p = getEventPosition(e);

if(ctx.isPointInPath(p.x, p.y)){

//點擊了矩形

}

}, false);

以上就是處理Canvas事件的基本方法,但是上面的代碼還有局限,由于isPointInPath方法僅判斷當(dāng)前上下文環(huán)境中的路徑,所以當(dāng)Canvas里已經(jīng)繪制了多個圖形時,僅能以最后一個圖形的上下文環(huán)境來判斷事件,比如:

代碼如下:

分享文章:canvashtml5,canvas h5
本文鏈接:http://aaarwkj.com/article36/dssjopg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、電子商務(wù)、網(wǎng)站導(dǎo)航、服務(wù)器托管網(wǎng)站排名、全網(wǎng)營銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
成人黄色小视频下载| 精品一区二区三区毛卡片| 日本中文字幕激情在线| 欧美口爆吞精在线播放| 91久久久久久人妻精品粉嫩| 中文字幕在线五月婷婷| 濑亚美莉在线观看一区二区三区| 亚洲欧美日韩颜射极品| 日韩精品国产一区二区在线| 亚洲日本在线观看午夜视频| 日本高清不卡免费在线观看视频一二三区| 亚洲男人av天堂东京热| 午夜精品久久久免费视频| 日本精品1区国产精品| 在线天堂一区二区三区| 日韩精品 视频二区| 亚洲精品日韩一区二区| 日本黄色一区二区三区四区| 欧美精品日本一区二区| 国产激情av网站在线观看| 亚洲午夜精品日韩乱码| 精品伊人久久大香线蕉| 一区二区三区免费在线观看视频| 日本福利影院在线观看| 2020亚洲欧美日韩在线| 欧美日韩一级一区二区| 片子免费毛片日韩不卡一区| 国产美女高潮流白浆视频免费看| 日韩欧美二区三区精品在线| 天天躁日日躁夜夜躁夜夜| 男女真人啪啪视频免费| 国产亚洲一区二区三区在线| 国产精品伦一区二区三级| 国产精品粗又长一区| 日本久久精品免费网站| 91福利免费在线看| 亚洲乱码中文字幕人妻| 亚洲av日韩av一区| 国产精品日本一区二区| 日日插天天干夜夜操| 午夜在线观看视频免费|