HTML DOM 快速導覽 - 元素物件 <canvas> (HTMLCanvasElement)

<canvas> 為 HTML 5 的內嵌元素 (embedded content) , DOM 介面為 HTMLCanvasElement 。



取得 <canvas> 的元素物件 (object) 後,可存取元素的全域屬性 (global attribute) 。 HTMLCanvasElement 另有定義屬性與方法
  • width
  • height
  • toDataURL()
  • toBlob()
  • getContext()


widthheight 、對應到 <canvas> 相同名稱的屬性, toDataURL() 回傳 URL 相關資料, toBlob() 回傳 Blob 物件, getContext() 回傳 CanvasRenderingContext2D 物件,其用於繪圖。舉例如下
function run() {
    var d = document.getElementsByTagName("canvas");
    var s = document.getElementById("show");
    s.innerHTML = d[0];
    var c = d[0].getContext("2d");
    c.fillStyle = "rgb(100, 100, 100)";  
    c.fillRect(10, 10, 160, 160);  
    c.fillStyle = "rgb(0, 0, 0)";  
    c.fillRect(30, 30, 120, 120);
}

/* 《程式語言教學誌》的範例程式
     http://pydoing.blogspot.com/
     檔名:htmldemo072.js
     功能:示範 JavaScript 程式 
     作者:張凱慶
     時間:西元 2011 年 8 月 */


此例用 document 物件的 getElementsByTagName() 方法 (method) ,取得標籤名稱為 canvas 的 HTMLCollection 物件,文件的第一個 <canvas> 元素亦即該 HTMLCollection 索引值為 0 的物件
var d = document.getElementsByTagName("canvas");
var s = document.getElementById("show");
s.innerHTML = d[0];


然後在 id 屬性 (attribute) 為 show 的元素中顯示 d[0] ,接下來是利用 getContext() 回傳的 CanvasRenderingContext2D 物件進行繪圖
var c = d[0].getContext("2d");
c.fillStyle = "rgb(100, 100, 100)";  
c.fillRect(10, 10, 160, 160);  
c.fillStyle = "rgb(0, 0, 0)";  
c.fillRect(30, 30, 120, 120);


我們以下面的 HTML 文件載入
<!DOCTYPE html>
<html>
<head>
<title>HTML DOM DEMO</title>
<script src="htmldemo072.js" type="text/javascript"></script>
</head>
<body>
<div><canvas id="demo" width="180" height="180"></canvas></div>
<input type="button" value="RUN" onclick="run();">
<div>Result: <span id="show"></span></div>
</html>

<!-- 《程式語言教學誌》的範例程式
     http://pydoing.blogspot.com/
     檔名:htmldemo072.html
     功能:示範 JavaScript 程式 
     作者:張凱慶
     時間:西元 2011 年 8 月 -->


瀏覽器 (broswer) 開啟,按 RUN 後如下



中英文術語對照
內嵌元素embedded content
物件object
全域屬性global attribute
方法method
屬性attribute
瀏覽器broswer


您可以繼續參考
HTML 5 範例

HTML 元素物件


相關目錄
HTML DOM 快速導覽
JavaScript 教材
首頁


參考資料
https://developer.mozilla.org/en/DOM/HTMLCanvasElement
https://developer.mozilla.org/en/HTML/Element/canvas
http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#the-canvas-element

沒有留言: