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

CanvasRenderingContext2D 為 HTML 5 內嵌元素 (embedded content) <canvas> 的 getContext() 方法所回傳的物件 (object) , arcTo() 為 CanvasRenderingContext2D 的方法,用來畫出弧線。



arcTo() 需要五個參數
arcTo(x1, y1, x2, y2, radius)


(x1, y1) 為曲線切線交點座標, (x2, y2) 為曲線結束座標, radius 為半徑。舉例如下
function run() {
    var d = document.getElementsByTagName("canvas");
    var c = d[0].getContext("2d");
    c.strokeStyle = "black";
    c.beginPath();
    c.lineWidth = 2;
    c.moveTo(40, 40);
    c.arcTo(120, 160, 160, 120, 40);
    c.stroke();
    c.closePath();
    
    c.strokeStyle = "red";
    c.beginPath();
    c.lineWidth = 1;
    c.moveTo(40, 40);
    c.lineTo(120, 160);
    c.lineTo(160, 120);
    c.stroke();
    c.closePath();
}

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


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


開始繪出路徑後,呼叫 arcTo() 畫出條黑色曲線
c.strokeStyle = "black";
c.beginPath();
c.lineWidth = 2;
c.moveTo(40, 40);
c.arcTo(120, 160, 160, 120, 40);
c.stroke();
c.closePath();


下面是利用紅色直線畫出的對照
c.strokeStyle = "red";
c.beginPath();
c.lineWidth = 1;
c.moveTo(40, 40);
c.lineTo(120, 160);
c.lineTo(160, 120);
c.stroke();
c.closePath();


我們以下面的 HTML 文件載入
<!DOCTYPE html>
<html>
<head>
<title>HTML DOM DEMO</title>
<script src="htmldemo088.js" type="text/javascript"></script>
</head>
<body onload="run();">
<canvas id="demo" width="180" height="180"></canvas>
</html>

<!-- 《程式語言教學誌》的範例程式
     http://pydoing.blogspot.com/
     檔名:htmldemo088.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

沒有留言: