canvas


什么是canvas ?

Canvas是一個矩形區域的畫布,可以用JavaScript在上面繪畫。控制其每一個像素。

canvas 標簽使用 JavaScript 在網頁上繪制圖像,本身不具備繪圖功能。

canvas 擁有多種繪制路徑、矩形、圓形、字符以及添加圖像的方法。

HTML5之前的web頁面只能用一些固定樣式的標簽:比如pdivh1等,但有了canvas Web頁面可以可以豐富多彩。

 <canvas> 標記由 Apple Safari 1.3 Web 瀏覽器中引入。對 HTML 的這一根本擴展的原因在於,HTML Safari 中的繪圖能力也為 Mac OS X 桌面的 Dashboard 組件所使用,並且 Apple 希望有一種方式在 Dashboard 中支持腳本化的圖形。

 

Firefox 1.5 Opera 9 都跟隨了 Safari 的引領。這兩個瀏覽器都支持 <canvas> 標記。

 

我們甚至可以在 IE 中使用 <canvas> 標記,並在 IE VML 支持的基礎上用開源的 JavaScript 代碼(由 Google 發起)來構建兼容性的畫布。

<canvas> 的標准化的努力由一個 Web 瀏覽器廠商的非正式協會在推進,目前 <canvas> 已經成為 HTML 5 草案中一個正式的標簽。

 

canvas主要應用的領域

1.游戲:canvas在基於Web的圖像顯示方面比Flash更加立體、更加精巧,canvas游戲在流暢度和跨平台方面更牛。 

2.可視化數據.數據圖表話,比如:echart

3.banner廣告Flash曾經輝煌的時代,智能手機還未曾出現。現在以及未來的智能機時代,HTML5技術能夠在banner廣告上發揮巨大作用,用Canvas實現動態的廣告效果再合適不過。

4.未來=> 模擬器:無論從視覺效果還是核心功能方面來說,模擬器產品可以完全由JavaScript來實現。

5.未來=> 遠程計算機控制:Canvas可以讓開發者更好地實現基於Web的數據傳輸,構建一個完美的可視化控制界面。

6.未來=> 圖形編輯器:Photoshop圖形編輯器將能夠100%基於Web實現。

7. 其他可嵌入網站的內容(多用於活動頁面、特效):類似圖表、音頻、視頻,還有許多元素能夠更好地與Web融合,並且不需要任何插件。

 

瀏覽器不兼容的處理

        ie9以上才支持canvas, 其他chromeff、蘋果瀏覽器等都支持

        只要瀏覽器兼容canvas,那么就會支持絕大部分api(個別最新api除外)

        移動端的兼容情況非常理想,基本上隨便使用

        2d的支持的都非常好,3dwebglie11才支持,其他都支持

        如果瀏覽器不兼容,最好進行友好提示  

canvas坐標系    

  1.1 設置繪制起點(moveTo)

 語法:ctx.moveTo(x, y); 
* 解釋:設置上下文繪制路徑的起點。相當於移動畫筆到某個位置
* 參數:x,y 都是相對於 canvas盒子的最左上角。
* 注意: ** 繪制線段前必須先設置起點,不然繪制無效。    

  1.1 繪制直線(lineTo)

* 語法:ctx.lineTo(x, y);
* 解釋:從x,y的位置繪制一條直線到起點或者上一個線頭點。
* 參數:x,y 線頭點坐標。

  1.2 路徑開始和閉合

* 開始路徑:ctx.beginPath();
* 閉合路徑:ctx.closePath();
* 解釋:如果復雜路徑繪制,必須使用路徑開始和結束。閉合路徑會自動把最后的線頭和開始的線頭連在一起。
* beginPath: 核心的作用是將 不同繪制的形狀進行隔離,
 每次執行此方法,表示重新繪制一個路徑,跟之前的繪制的墨跡可以進行分開樣式設置和管理。

  1.3 描邊(stroke)

* 語法:ctx.stroke();
* 解釋:根據路徑繪制線。路徑只是草稿,真正繪制線必須執行stroke

  1.4 填充(fill)

* 語法:ctx.fill(); 
* 解釋:填充,是將閉合的路徑的內容填充具體的顏色。默認黑色。
* 注意:交叉路徑的填充問題,非零環繞原則,順逆時針穿插次數決定是否填充。
以下是非0環繞原則的原理:
非零環繞規則是這么來判斷有自我交叉情況的路徑的:對於路徑中的任意給定區域,從該區域內部畫一條足夠長的線段,
使此線段的終點完全落在路徑范圍之外。
   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM