日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

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

编程问答

关于H5中的Canvas API的探索

發布時間:2024/3/13 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于H5中的Canvas API的探索 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Canvas API 是H5中比較炫酷的一部分內容。可以通過它動態的生成和展示圖形、圖表、圖像以及動畫。下面我將學習一下Canvas API。

最后有書籍和源碼。

一、概述:

? 1.基本元素: ??

在網頁上使用canvas元素時,它會創建一塊矩形區域,默認為300px*150px (w*h),可以自定義具體大小和canvas元素的其他特性。

? 基本canvas元素:

? 在頁面加入canvas元素后,可以通過js腳本來控制它,可以在其中添加圖片、線條以及文字,也可以在里面繪圖,甚至可以加入高級動畫。

? ?使用canvas編程,首先要獲取其上下文(context)。接著在上下文中執行動作,最后將這些動作應用到上下文中。可以將canvas這種編輯方式想象成為數據庫事務:

開發人員先發起一個事務,然后執行某些操作,最后提交事務。

?2. canvas坐標

? ? ?canvas坐標從左上角開始,x軸延水平方向(按像素)向右延伸,y軸延垂直方向向下延伸。左上角坐標為x=0,y=0的點稱為原點

3.使用HTML5 canvas API

??

?效果:

?

? 實例:在canvas中繪制一條對角線

?html代碼:

js代碼:

效果:

從上面實例我們可知方法moveTo和lineTo并不畫線,而是在結束canvas操作的時候,通過調用stroke方法來完成線條的繪制。

很多對上下文的操作不會立即顯示到頁面上。beginPath、moveTo、lineTo,這些函數不會直接修改canvas的展示結果。canvas中很多用于設置樣式和外觀的函數也同樣不會直接修改顯示結果。只有當對路徑應用繪制(stroke)或者填充(fill)方法時,結果才會顯示出來。否則只有在顯示圖像、顯示文本或者繪制、填充和清除矩形框的時候,canvas才會馬上更新。

?二、入門操作

1.通過變換(transformation)作圖

變換是實現復雜canvas操作的最好方式

關于可重用代碼的一條重要建議:一般繪制都應從原點開始,應用變換(縮放、平移、旋轉),然后不斷修改代碼,直至達到希望的效果。

利用變換畫一個和上面一樣的實例:

代碼:

效果:

說明:

? 保存尚未修改的上下文context,這樣即使進行了繪制和變換操作,也能恢復到初始狀態。如果不保存,那么在進行變換操作后,其影響會帶到后續操作中,所以在變換前保存context,可以方便恢復原來的狀態。

2.路徑

H5 canvas API中路徑代表你希望呈現的任何形狀,如果想要在canvas上繪制任意形狀的圖形,需要多關注路徑API。

不論繪制何種圖形,第一個需要調用的就是就是beginPath,它用來通知canvas開始繪制一個新的圖形了。beginPath的最大用處是canvas需要根據此來計算圖形的內部和外部范圍。以便完成后續的續邊和填充。

幾個簡單的context路徑函數:

moveTo(x,y):不繪制,只是將當前位置移動到新的目標坐標(x,y)。

lineTo(x,y):不僅將當前位置移動到新的目標坐標(x,y)而且在兩個坐標之間畫一條直線。

不管調用他們哪一個方法,都不能真正的畫出圖形。我們只是在定義路徑的位置。

實例:松樹樹冠的畫法:

代碼:

html代碼:

js代碼

效果:

?3.樣式

通過修改context的屬性,來為圖形增加樣式

線條樣式

增加線條樣式后的代碼

效果:

?繼續增加樣式:填充樣式

增加填充樣式后的代碼:

效果:

?4.曲線的繪制

利用曲線繪制一條路

js代碼

效果:

說明:?quadraticCurveTo函數繪制曲線的起點是當前坐標,帶有兩組參數(x,y)第二組是指曲線的終點,第一組代表控制點。所謂的控制點位于曲線的旁邊,不是曲線之上,其作用相當于對曲線產生一個拉力。通過調整控制點的位置,就可以改變曲線的曲率。在右上方畫一條一樣的曲線,以形成一條路。然后,像之前,描邊樹冠把這條路繪制到canvas上

5.插入圖片

? 在canvas中插入圖片非常簡單。可以通過修正層為圖片添加印章、拉伸圖片或者修改圖片。并且圖片會成為canvas上的焦點。用H5 canvas API內置的幾個簡單命令,可以輕松地為canvas添加圖片內容。

注意: 圖片增加了canvas操作的復雜度,必須等到圖片加載完之后,才能對其進行操作,瀏覽器通常在頁面腳本執行的同時異步加載圖片。如果試圖在圖片未加載之前就將其呈現到canvas上,那么canvas將不會顯示任何圖片。因此需要注意,在呈現之前,需要確保圖片已經加載完畢。

測試代碼,僅供參看

?6.漸變

漸變是指在顏色集上使用逐步抽樣算法,并將結果應用于描邊樣式和填充樣式中。

使用漸變的三個步驟:1) 創建漸變對象

? ? ? ? ? ? ? ? ? ? ? ? ? ? 2)為漸變對象設計顏色,指明過渡方式

? ? ? ? ? ? ? ? ? ? ? ? ? ? 3)在context上為填充樣式或者描邊樣式設置漸變。

我們可以將漸變看成是顏色沿著一條線進行緩慢的變化。例如,如果為漸變對象提供了A、B兩個點。不論是繪制還是填充,只要從A移動到B,就會帶來顏色的變化。

?漸變示例:

效果對比:

? ? ? ? ? ? ?漸變前 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?漸變后(樹干有了光亮)

由上例可知,要設置顯示哪種顏色,在漸變對象上使用addColorStop函數即可,這個函數允許指定兩個參數:顏色和偏移量。顏色是指開發人員希望在偏移位置描邊或者填充時所使用的顏色。偏移量是一個0.0-1.0之間的數值。代表沿著漸近線漸變的距離有多遠。

除了上面提到的線性漸變以外,H5 canvas API還提供了放射性漸變,放射性漸變就是顏色會介于兩個指定圓間的錐形區域平滑變化。放射性漸變和線性漸變使用的顏色終止點是一樣的

實例:

createRadialGradient(x0,y0,r0,x1,y1,r1).代碼中前三個參數代表以(x0,y0)為圓心,r0為半徑的圓,后三個參數代表以(x1,y1)為圓心,r1為半徑的圓。漸變會在兩個圓中間的區域出現。

?6.背景圖

?下面我們用背景圖來填充小路

?

效果圖:

?我們先設置了context上的strokeStyle屬性,把調用context.createPattern的返回值賦給該屬性,注意,圖片必須提前加載完畢 ?

context.createPattern的第二個參數是重復性標記

7.縮放canvas對象

效果圖:

說明:scale函數帶有兩個參數分別代表在x,y上兩個維度的值。

7.變換

旋轉:

context.rotate(1.57);//旋轉角度參數以弧度為參數

變換綜合:

?

效果:顯示陰影

8.canvas 文本

H5 canvas API提供了強大的文本支持,操作文本的方式,與操作其他路徑對象的方式相同:可以描繪文本輪廓和填充文本內部,同時,能夠應用于其他圖形的變換和樣式,都能應用于文本。

context對象的文本繪制功能由兩個函數組成:

fillText(text,x,y,maxwidth);

strokeText(text,x,y,maxwidth);

兩個函數參數完全相同,必選參數包括文本參數和坐標參數,其中maxwidth為可選參數,用于限制字體大小,他會將文本字體強制收縮到指定尺寸。

?

?

效果:

9.像素數據 (尚未深入)

canvas API最有用的特性之一是允許開發人員直接訪問canvas底層像素數據,這種數據訪問是雙向的:一方面可以以數值數組形式獲取像素數據,另一方面可以修改數組的值以將其應用于canvas上。可以直接調用像素數據來控制canvas.這要歸功于canvas API內置的三個函數。

第一個是context.getImageData(sx,sy,sw,sh);這個函數返回當前canvas狀態,并以數值數組的方式顯示。

?

?

小結:

H5的 canvas API具有強大的功能,利用它可以直接修改web應用的外觀。需要注意的是,繪制過程中通常以原點為起點,展現圖像之前要先完成加載,使用外部來源的圖片時,需要留心。我們這里只介紹了一些canvas基礎知識,作為一個對h5了解的入門吧。

?

?附上下載鏈接:

canvas源碼(自己):

鏈接:http://pan.baidu.com/s/1o8u93eE 密碼:zfm6

H5書籍:

? ? ?鏈接:http://pan.baidu.com/s/1gfqebqN 密碼:bgdo

? ? 書籍源碼:鏈接:http://pan.baidu.com/s/1qYD2mxm 密碼:nzwr

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

??

?

轉載于:https://www.cnblogs.com/xiaoduc-org/p/5795925.html

總結

以上是生活随笔為你收集整理的关于H5中的Canvas API的探索的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。