canvas

HTML5新增標籤

Canvas API(畫布)是在HTML5中新增的標籤用於在網頁實時生成圖像,並且可以操作圖像內容,基本上它是一個可以用JavaScript操作的點陣圖(bitmap)。

Canvas 對象表示一個 HTML 畫布元素 -。它沒有自己的行為,但是定義了一個 API 支持腳本化客戶端繪圖操作。

定義和用法


你可以直接在該對象上指定寬度和高度,但是,其大多數功能都可以通過CanvasRenderingContext2D 對象獲得。這是通過 Canvas 對象的getContext() 方法並且把直接量字元串 "2d" 作為唯一的參數傳遞給它而獲得的。
標記在 Safari 1.3 中引入,在製作此參考頁時,它在 Firefox 1.5 和 Opera 9 中也得到了支持。在 IE 中, 標記及其 API 可以使用位於excanvas點sourceforge點net的 ExplorerCanvas 開源項目來模擬。
提示:如果希望學習如何使用 來繪製圖形,可以訪問 Mozilla 提供的Canvas 教程(英文)以及相應的中文 Canvas 教程。

歷史


這個 HTML 元素是為了客戶端矢量圖形而設計的。它自己沒有行為,但卻把一個繪圖 API 展現給客戶端 JavaScript 以使腳本能夠把想繪製的東西都繪製到一塊畫布上。
標記由 Apple 在 Safari 1.3 Web 瀏覽器中引入。對 HTML 的這一根本擴展的原因在於,HTML 在 Safari 中的繪圖能力也為 Mac OS X 桌面的 Dashboard 組件所使用,並且 Apple 希望有一種方式在 Dashboard 中支持腳本化的圖形。
Firefox 1.5 和 Opera 9 都跟隨了 Safari 的引領。這兩個瀏覽器都支持 標記。
我們甚至可以在 IE 中使用 標記,並在 IE 的 VML 支持的基礎上用開源的 JavaScript 代碼(由 Google 發起)來構建兼容性的畫布。
的標準化的努力由一個 Web 瀏覽器廠商的非正式協會在推進,目前 已經成為 HTML 5 草案中一個正式的標籤。

差異


標記和 SVG以及 VML 之間的一個重要的不同是, 有一個基於 JavaScript 的繪圖 API,而 SVG 和 VML 使用一個 XML 文檔來描述繪圖。
這兩種方式在功能上是等同的,任何一種都可以用另一種來模擬。從表面上看,它們很不相同,可是,每一種都有強項和弱點。例如,SVG 繪圖很容易編輯,只要從其描述中移除元素就行。
要從同一圖形的一個 標記中移除元素,往往需要擦掉繪圖重新繪製它。

標記繪圖


大多數 Canvas 繪圖 API 都沒有定義在 元素本身上,而是定義在通過畫布的getContext() 方法獲得的一個“繪圖環境”對象上。
Canvas API 也使用了路徑的表示法。但是,路徑由一系列的方法調用來定義,而不是描述為字母和數字的字元串,比如調用 beginPath() 和 arc() 方法。
一旦定義了路徑,其他的方法,如 fill(),都是對此路徑操作。繪圖環境的各種屬性,比如 fillStyle,說明了這些操作如何使用。
註釋:Canvas API 非常緊湊的一個原因上它沒有對繪製文本提供任何支持。要把文本加入到一個 圖形,必須要麼自己繪製它再用點陣圖圖像合併它,或者在 上方使用 CSS 定位來覆蓋 HTML 文本。
Canvas 對象的屬性
height 屬性
畫布的高度。和一幅圖像一樣,這個屬性可以指定為一個整數像素值或者是窗口高度的百分比。當這個值改變的時候,在該畫布上已經完成的任何繪圖都會擦除掉。默認值是 150。
width 屬性
畫布的寬度。和一幅圖像一樣,這個屬性可以指定為一個整數像素值或者是窗口寬度的百分比。當這個值改變的時候,在該畫布上已經完成的任何繪圖都會擦除掉。默認值是 300。
Canvas 對象的方法
方法描述
getContext()返回一個用於在畫布上繪圖的環境。
例子
your browser does not support the canvas tag

瀏覽器支持


Internet Explorer 9+, Firefox, Opera, Chrome, 和 Safari 支持 標記.
注意:Internet Explorer 8 及更早 IE 版本的瀏覽器不支持 標記。