HTML DOM 快速導覽 - CanvasRenderingContext2D 物件的方法 drawImage()

CanvasRenderingContext2D 為 HTML 5 內嵌元素 (embedded content) <canvas> 的 getContext() 方法所回傳的物件 (object) , drawImage() 為 CanvasRenderingContext2D 的方法,用來畫出圖片檔案,也就是 JPG 、 PNG 等圖檔。



drawImage() 有三個參數版本
drawImage(image, dx, dy)
drawImage(image, dx, dy, dw, dh)
drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh)


image 為圖片物件, (dx, dy) 為圖片的起始座標, dw 為圖片的寬, dh 為圖片的高。舉例如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function run() {
    var d = document.getElementsByTagName("canvas");
    var c = d[0].getContext("2d");
    var img = new Image(); 
    img.onload = function(){ 
        for (var i = 0; i < 4; i++){ 
            for (var j = 0; j < 4; j++){ 
                c.drawImage(img, j * 50, i * 50, 50, 50); 
            }
        
    
    img.src = 'gear.png';
}
 
/* 《程式語言教學誌》的範例程式
     檔名:htmldemo113.js
     功能:示範 JavaScript 程式
     作者:張凱慶
     時間:西元 2011 年 8 月 */


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


然後利用迴圈畫出 4 * 4 個圖片
4
5
6
7
8
9
10
11
12
var img = new Image(); 
img.onload = function(){ 
    for (var i = 0; i < 4; i++){ 
        for (var j = 0; j < 4; j++){ 
            c.drawImage(img, j * 50, i * 50, 50, 50); 
        }
    
img.src = 'gear.png';


我們以下面的 HTML 文件載入
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!DOCTYPE html>
<html>
<head>
<title>HTML DOM DEMO</title>
<script src="htmldemo113.js" type="text/javascript"></script>
</head>
<body onload="run();">
<canvas id="demo" width="200" height="200"></canvas>
</html>
 
<!-- 《程式語言教學誌》的範例程式
     檔名:htmldemo113.html
     功能:示範 JavaScript 程式
     作者:張凱慶
     時間:西元 2011 年 8 月 -->


瀏覽器 (browser) 開啟如下



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


您可以繼續參考
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

沒有留言: