html5 canvas 詳細教程1---樣式設置/矩形繪製/路徑繪製

       <canvas></canvas>是html5出現的新標籤,像所有的dom對象一樣它有自己本身的屬性、方法和事件,其中就有繪圖的方法,js能夠調用它來進行繪圖 ,最近在研讀《html5與css3權威指南》下面對其中最好玩的canvas的學習做下讀書筆記與實驗。

一,繪圖工具: getcontext-----getContext() 方法可返回一個對象,該對象提供了用於在畫布上繪圖的方法和屬性。

定義和用法

getContext() 方法返回一個用於在畫布上繪圖的環境。

context是一個封裝了很多繪圖功能的對象,獲取這個對象的方法是    var ctx(或context)=canvas.getContext("2d");//html5僅支持2d不支持3d

參數

參數 contextID 指定了您想要在畫布上繪製的類型。當前唯一的合法值是 "2d",它指定了二維繪圖,並且導致這個方法返回一個環境對象,該對象導出一個二維繪圖 API。

返回值

一個 CanvasRenderingContext2D 對象,使用它可以繪製到 Canvas 元素中。

描述

返回一個表示用來繪製的環境類型的環境。其本意是要爲不同的繪製類型(2 維、3 維)提供不同的環境。當前,唯一支持的是 "2d",它返回一個 CanvasRenderingContext2D 對象,該對象實現了一個畫布所使用的大多數方法。


二,利用 ctx對象進行圖像的繪製:

顏色、樣式和陰影

屬性 描述
fillStyle 設置或返回用於填充繪畫的顏色、漸變或模式
strokeStyle 設置或返回用於筆觸的顏色、漸變或模式
shadowColor 設置或返回用於陰影的顏色
shadowBlur 設置或返回用於陰影的模糊級別
shadowOffsetX 設置或返回陰影距形狀的水平距離
shadowOffsetY 設置或返回陰影距形狀的垂直距離
方法 描述
createLinearGradient() 創建線性漸變(用在畫布內容上)
createPattern() 在指定的方向上重複指定的元素
createRadialGradient() 創建放射狀/環形的漸變(用在畫布內容上)
addColorStop() 規定漸變對象中的顏色和停止位置

線條樣式

屬性 描述
lineCap 設置或返回線條的結束端點樣式
lineJoin 設置或返回兩條線相交時,所創建的拐角類型
lineWidth 設置或返回當前的線條寬度
miterLimit 設置或返回最大斜接長度

矩形

方法 描述
rect() 創建矩形
fillRect() 繪製“被填充”的矩形
strokeRect() 繪製矩形(無填充)
clearRect() 在給定的矩形內清除指定的像素

路徑

方法 描述
fill() 填充當前繪圖(路徑)
stroke() 繪製已定義的路徑
beginPath() 起始一條路徑,或重置當前路徑
moveTo() 把路徑移動到畫布中的指定點,不創建線條
closePath() 創建從當前點回到起始點的路徑
lineTo() 添加一個新點,然後在畫布中創建從該點到最後指定點的線條
clip() 從原始畫布剪切任意形狀和尺寸的區域
quadraticCurveTo() 創建二次貝塞爾曲線
bezierCurveTo() 創建三次方貝塞爾曲線
arc() 創建弧/曲線(用於創建圓形或部分圓)
arcTo() 創建兩切線之間的弧/曲線
isPointInPath() 如果指定的點位於當前路徑中,則返回 true,否則返回 false

轉換

方法 描述
scale() 縮放當前繪圖至更大或更小
rotate() 旋轉當前繪圖
translate() 重新映射畫布上的 (0,0) 位置
transform() 替換繪圖的當前轉換矩陣
setTransform() 將當前轉換重置爲單位矩陣。然後運行 transform()

文本

屬性 描述
font 設置或返回文本內容的當前字體屬性
textAlign 設置或返回文本內容的當前對齊方式
textBaseline 設置或返回在繪製文本時使用的當前文本基線
方法 描述
fillText() 在畫布上繪製“被填充的”文本
strokeText() 在畫布上繪製文本(無填充)
measureText() 返回包含指定文本寬度的對象

圖像繪製

方法 描述
drawImage() 向畫布上繪製圖像、畫布或視頻

像素操作

屬性 描述
width 返回 ImageData 對象的寬度
height 返回 ImageData 對象的高度
data 返回一個對象,其包含指定的 ImageData 對象的圖像數據
方法 描述
createImageData() 創建新的、空白的 ImageData 對象
getImageData() 返回 ImageData 對象,該對象爲畫布上指定的矩形複製像素數據
putImageData() 把圖像數據(從指定的 ImageData 對象)放回畫布上

合成

屬性 描述
globalAlpha 設置或返回繪圖的當前 alpha 或透明值
globalCompositeOperation 設置或返回新圖像如何繪製到已有的圖像上

其他

方法 描述
save() 保存當前環境的狀態
restore() 返回之前保存過的路徑狀態和屬性
createEvent()  
getContext()  
toDataURL()  

1.樣式設置:

canvas元素繪製圖像的時候有兩種方法,分別是

        context.fill()//填充

        context.stroke()//繪製邊框

 style: 在進行圖形繪製前,要設置好繪圖的樣式

(1)context.fillStyle//填充的樣式

定義和用法

fillStyle 屬性設置或返回用於填充繪畫的顏色、漸變或模式。

默認值: #000000
JavaScript 語法: context.fillStyle=color|gradient|pattern;

屬性值

描述
color 指示繪圖填充色的 CSS 顏色值。默認值是 #000000。
gradient 用於填充繪圖的漸變對象(線性放射性
pattern 用於填充繪圖的 pattern 對象

實例 1

定義從上到下的漸變,作爲矩形的填充樣式:


var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
var my_gradient=ctx.<strong>createLinearGradient</strong>(0,0,0,170);
my_gradient.<strong>addColorStop</strong>(0,"black");
my_gradient.addColorStop(1,"white");
ctx.fillStyle=my_gradient;
ctx.fillRect(20,20,150,100);

實例 2

定義從黑到紅到白的的漸變,作爲矩形的填充樣式:


var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
var my_gradient=ctx.<strong>createLinearGradient</strong>(0,0,170,0);
my_gradient.<strong>addColorStop</strong>(0,"black");
my_gradient.addColorStop(0.5,"red");
my_gradient.addColorStop(1,"white");
ctx.fillStyle=my_gradient;
ctx.fillRect(20,20,150,100);

實例 3

用到的圖像:

lamp

使用圖像來填充繪圖:


var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
var img=document.getElementById("lamp");
var pat=ctx.<strong>createPattern</strong>(img,"repeat");
ctx.rect(0,0,150,100);
ctx.fillStyle=pat;
ctx.fill();


(2)context.strokeStyle//邊框樣式

定義和用法

strokeStyle 屬性設置或返回用於筆觸的顏色、漸變或模式。

默認值: #000000
JavaScript 語法: context.strokeStyle=color|gradient|pattern;

屬性值

描述
color 指示繪圖筆觸顏色的 CSS 顏色值。默認值是 #000000。
gradient 用於填充繪圖的漸變對象(線性放射性
pattern 用於創建 pattern 筆觸的 pattern 對象

實例 1

繪製一個矩形。使用漸變筆觸:


<span style="font-family: Consolas, 'Courier New', Courier, monospace; white-space: normal; color: rgb(51, 51, 51); font-size: 13px; line-height: 23px;">var c=document.getElementById("myCanvas");</span>
var ctx=c.getContext("<span style="font-family: Consolas, 'Courier New', Courier, monospace;">2d");</span>
var gradient=ctx.createLinearGradient(0,0,170,0);
gradient.addColorStop("0","magenta");
gradient.addColorStop("0.5","blue");
gradient.addColorStop("1.0","red");

// 用漸變進行填充
ctx.strokeStyle=gradient;
ctx.lineWidth=5;
ctx.strokeRect(20,20,150,100);


實例 2

用一個漸變筆觸來寫文本 "w3school.com.cn":



var c=document.getElementById("myCanvas");

var ctx=c.getContext("2d");

ctx.<strong>font</strong>="30px Verdana";
// 創建漸變
var gradient=ctx.<strong>createLinearGradient</strong>(0,0,c.width,0);
gradient.addColorStop("0","magenta");
gradient.addColorStop("0.5","blue");
gradient.addColorStop("1.0","red");
// 用漸變進行填充
ctx.strokeStyle=gradient;
ctx.<strong>strokeText</strong>("Big smile!",10,50);


(3) context.lineWidth/lineCap/lineJoin/lineLimit  //圖形邊框寬度,線段樣式

lineWidth 屬性設置或返回當前線條的寬度,以像素計。


默認值: 1
JavaScript 語法: context.lineWidth=number;

屬性值

描述
number 當前線條的寬度,以像素計。

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.lineWidth=10;
ctx.strokeRect(20,20,80,100);

lineCap 屬性設置或返回線條末端線帽的樣式。 註釋:"round" 和 "square" 會使線條略微變長。


默認值: butt
JavaScript 語法: context.lineCap="butt|round|square";

屬性值

描述
butt 默認。向線條的每個末端添加平直的邊緣。
round 向線條的每個末端添加圓形線帽。
square 向線條的每個末端添加正方形線帽。

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.beginPath();
ctx.lineCap="round";
ctx.moveTo(20,20);
ctx.lineTo(20,200);
ctx.<strong>stroke</strong>();

lineJoin 屬性設置或返回所創建邊角的類型,當兩條線交匯時。註釋:值 "miter" 受 miterLimit 屬性的影響。


默認值: miter
JavaScript 語法: context.lineJoin="bevel|round|miter";

屬性值

描述
bevel 創建斜角。
round 創建圓角。
miter 默認。創建尖角。


var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.beginPath();
ctx.lineJoin="round";
ctx.<strong>moveTo</strong>(20,20);
ctx.<strong>lineTo</strong>(100,50);
ctx.lineTo(20,100);
ctx.<strong>stroke</strong>();

miterLimit 屬性設置或返回最大斜接長度。斜接長度指的是在兩條線交匯處內角和外角之間的距離。



提示:只有當 lineJoin 屬性爲 "miter" 時,miterLimit 纔有效。

邊角的角度越小,斜接長度就會越大。

爲了避免斜接長度過長,我們可以使用 miterLimit 屬性。

如果斜接長度超過 miterLimit 的值,邊角會以 lineJoin 的 "bevel" 類型來顯示(圖解 3):




默認值: 10
JavaScript 語法: context.miterLimit=number;

屬性值

描述
number

正數。規定最大斜接長度。

如果斜接長度超過 miterLimit 的值,邊角會以 lineJoin 的 "bevel" 類型來顯示。


var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.lineWidth=10;
ctx.lineJoin="miter";
ctx.miterLimit=5;
ctx.moveTo(20,20);
ctx.lineTo(50,27);
ctx.lineTo(20,34);
ctx.stroke();



(4) 陰影 context.shadowBlur/shadowColor/shadowOffsetX/shadowOffsetY

shadowColor 屬性設置或返回用於陰影的顏色。

註釋請將 shadowColor 屬性與 shadowBlur 屬性一起使用,來創建陰影。

提示:請通過使用 shadowOffsetX 和 shadowOffsetY 屬性來調節陰影效果。

默認值: #000000
JavaScript 語法: context.shadowColor=color;

屬性值

描述
color 用於陰影的 CSS 顏色值。默認值是 #000000。


shadowBlur 屬性設置或返回陰影的模糊級數。

默認值: #000000
JavaScript 語法: context.shadowBlur=number;

屬性值

描述
number 陰影的模糊級數


shadowOffsetX/Y 屬性設置或返回形狀與陰影的水平距離。

shadowOffsetX=0 指示陰影位於形狀的正下方。

shadowOffsetX=20 指示陰影位於形狀 left 位置右側的 20 像素處。

shadowOffsetX=-20 指示陰影位於形狀 left 位置左側的 20 像素處。

提示:如需調整距離形狀的垂直位置,請使用 shadowOffsetY 屬性。

默認值: 0
JavaScript 語法: context.shadowOffsetX=number;

屬性值

描述
number 正值或負值,定義陰影與形狀的水平距離。

 實例:設置矩形陰影

<pre name="code" class="html">var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.shadowBlur=10;
ctx.shadowOffsetX=20;
ctx.shadowColor="black";
ctx.fillStyle="blue";
ctx.fillRect(20,20,100,80);



(5)漸變方法 creatLinearGradient()/creatRadialGradient()/addColorStop()

createLinearGradient() 方法創建線性的漸變對象。

漸變可用於填充矩形、圓形、線條、文本等等。

提示:請使用該對象作爲 strokeStyle 或 fillStyle 屬性的值。

提示:請使用 addColorStop() 方法規定不同的顏色,以及在 gradient 對象中的何處定位顏色。

JavaScript 語法:

context.createLinearGradient(x0,y0,x1,y1);

參數值

參數 描述
x0 漸變開始點的 x 座標
y0 漸變開始點的 y 座標
x1 漸變結束點的 x 座標
y1 漸變結束點的 y 座標

createLinearGradient() 方法創建放射狀/圓形漸變對象。

漸變可用於填充矩形、圓形、線條、文本等等。

提示:請使用該對象作爲 strokeStyle 或 fillStyle 屬性的值。

提示:請使用 addColorStop() 方法規定不同的顏色,以及在 gradient 對象中的何處定位顏色。

JavaScript 語法:

context.createRadialGradient(x0,y0,r0,x1,y1,r1);

參數值

參數 描述
x0 漸變的開始圓的 x 座標
y0 漸變的開始圓的 y 座標
r0 開始圓的半徑
x1 漸變的結束圓的 x 座標
y1 漸變的結束圓的 y 座標
r1 結束圓的半徑

addColorStop() 方法規定 gradient 對象中的顏色和位置。

addColorStop() 方法與 createLinearGradient() 或 createRadialGradient() 一起使用。

註釋:您可以多次調用 addColorStop() 方法來改變漸變。如果您不對 gradient 對象使用該方法,那麼漸變將不可見。爲了獲得可見的漸變,您需要創建至少一個色標。

JavaScript 語法:

gradient.addColorStop(stop,color);

參數值

參數 描述
stop 介於 0.0 與 1.0 之間的值,表示漸變中開始與結束之間的位置。
color 在結束位置顯示的 CSS 顏色值

實例

通過多個 addColorStop() 方法來定義漸變:

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");

var grd=ctx.createLinearGradient(0,0,170,0);
grd.addColorStop(0,"black");
grd.addColorStop("0.3","magenta");
grd.addColorStop("0.5","blue");
grd.addColorStop("0.6","green");
grd.addColorStop("0.8","yellow");
grd.addColorStop(1,"red");

ctx.fillStyle=grd;
ctx.fillRect(20,20,150,100);

定義一個從黑到白的漸變,作爲矩形的填充樣式:


var c=document.getElementById('myCanvas');
var ctx=c.getContext('2d');

var grd=ctx.createLinearGradient(0,0,170,0);
grd.addColorStop(0,"black");
grd.addColorStop(1,"white");

ctx.fillStyle=grd;
ctx.fillRect(20,20,150,100);

 顏色的表示方式: 直接用顏色名稱:"red" "green" "blue"/十六進制顏色值: "#EEEEFF"/rgb(1-255,1-255,1-255)/rgba(1-255,1-255,1-255,透明度)

(6)模式填充 createPattern()

createPattern() 方法在指定的方向內重複指定的元素。元素可以是圖片、視頻,或者其他 <canvas> 元素。被重複的元素可用於繪製/填充矩形、圓形或線條等等。

JavaScript 語法:

context.createPattern(image,"repeat|repeat-x|repeat-y|no-repeat");

參數值

參數 描述
image 規定要使用的圖片、畫布或視頻元素。
repeat 默認。該模式在水平和垂直方向重複。
repeat-x 該模式只在水平方向重複。
repeat-y 該模式只在垂直方向重複。
no-repeat 該模式只顯示一次(不重複)。


2.繪製矩形  

參數值

參數 描述
x 矩形左上角的 x 座標
y 矩形左上角的 y 座標
width 矩形的寬度,以像素計
height 矩形的高度,以像素計

 (1)rect(x,y,width,height)

rect() 方法創建矩形提示:請使用 stroke() 或 fill() 方法在畫布上實際地繪製矩形。

(2)context.fillRect(x,y,width,height) 

 fillRect() 方法繪製“已填色”的矩形。默認的填充顏色是黑色。提示:請使用 fillStyle 屬性來設置用於填充繪圖的顏色、漸變或模式。

(3)strokeRect(x,y,width,height)

strokeRect() 方法繪製矩形(不填色)。筆觸的默認顏色是黑色。提示:請使用 strokeStyle 屬性來設置筆觸的顏色、漸變或模式。

(4)clearRect(x,y,width,height)

clearRect() 方法清空給定矩形內的指定像素。

實例:

在給定矩形內清空一個矩形:


var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.fillStyle="red";
ctx.fillRect(0,0,300,150);
ctx.clearRect(20,20,100,50);

通過 rect() 方法來創建三個矩形:


JavaScript:
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");

// 紅色矩形
ctx.beginPath();
ctx.lineWidth="6";
ctx.strokeStyle="red";
ctx.rect(5,5,290,140);
ctx.stroke();

// 綠色矩形
ctx.beginPath();
ctx.lineWidth="4";
ctx.strokeStyle="green";
ctx.rect(30,30,50,50);
ctx.stroke();

// 藍色矩形
ctx.beginPath();
ctx.lineWidth="10";
ctx.strokeStyle="blue";
ctx.rect(50,50,150,80);
ctx.stroke();

繪製 150*100 像素的已填充矩形:

  

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.fillRect(20,20,150,100);

繪製 150*100 像素的矩形:


<span style="font-size:10px;">var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.strokeRect(20,20,150,100);</span>


3.繪製路徑

(1)開始路徑繪製函數 beginPath()----一般放在最前面,創建一個路徑其實點,表示將要開始繪製路徑

beginPath() 方法開始一條路徑,或重置當前的路徑,創建一個路徑起始點。

提示:請使用這些方法來創建路徑:moveTo()、lineTo()、quadricCurveTo()、bezierCurveTo()、arcTo() 以及 arc()。

提示:請使用 stroke() 方法在畫布上繪製確切的路徑。


(2)繪製路徑/填充路徑 stroke()/fill()-------一般確定好路徑之後使用,進行路徑的繪製

stroke() 方法會實際地繪製出通過 moveTo() 和 lineTo() 方法定義的路徑。默認顏色是黑色。提示:請使用 strokeStyle 屬性來繪製另一種顏色/漸變。

fill() 方法填充當前的圖像(路徑)。默認顏色是黑色。 提示:請使用 fillStyle 屬性來填充另一種顏色/漸變。

註釋:如果路徑未關閉,那麼 fill() 方法會從路徑結束點到開始點之間添加一條線,以關閉該路徑,然後填充該路徑。


(3)確定路徑-----moveTo()/lineTo()/closePath()

注意:canvas畫布中,座標(0,0)在左上角,x軸向下,y軸向右  

context.moveTo(x,y);    //移動路徑到座標(x,y)
context.lineTo(x,y);  //lineTo() 方法添加一個新點(x,y),然後創建從該點到畫布中最後指定點的線條。
context.closePath();   //closePath() 方法創建從當前點到開始點的路徑。
context.isPointInPath(x,y);  //isPointInPath() 方法返回 true,如果指定的點位於當前路徑中;否則返回 false。

實例:

繪製一條路徑,形狀是字母 L:


var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.beginPath();
ctx.moveTo(20,20);
ctx.lineTo(20,100);
ctx.lineTo(70,100);
ctx.stroke();

繪製一條路徑,形式是字母 L,然後繪製線條以返回開始點,並填充綠色:


var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.beginPath();
ctx.moveTo(20,20);
ctx.lineTo(20,100);
ctx.lineTo(70,100);
ctx.closePath();
ctx.stroke();
ctx.fillStyle="green";
ctx.fill();

在畫布上繪製兩條路徑;紅色和藍色:


var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.beginPath();
ctx.lineWidth="5";
ctx.strokeStyle="red"; // 紅色路徑
ctx.moveTo(0,75);
ctx.lineTo(250,75);
ctx.stroke(); // 進行繪製
ctx.beginPath();
ctx.strokeStyle="blue"; // 藍色路徑
ctx.moveTo(50,0);
ctx.lineTo(150,130);
ctx.stroke(); // 進行繪製

繪製一個矩形,如果點 20,50 位於當前路徑中:


var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.rect(20,20,150,100);
if (ctx.isPointInPath(20,50))
   {
   ctx.stroke();
   };

(4)圓弧和曲線的繪製:


二次貝塞爾曲線:---quadraticCurveTo(cpx,xpy,x,y) 方法通過使用表示二次貝塞爾曲線的指定控制點,向當前路徑添加一個點。

二次貝塞爾曲線需要兩個點。第一個點是用於二次貝塞爾計算中的控制點,第二個點是曲線的結束點。曲線的開始點是當前路徑中最後一個點。如果路徑不存在,那麼請使用 beginPath() 和 moveTo() 方法來定義開始點。


  • 開始點:moveTo(20,20)
  • 控制點:quadraticCurveTo(20,100,200,20)
  • 結束點:quadraticCurveTo(20,100,200,20)

參數 描述
cpx 貝塞爾控制點的 x 座標
cpy 貝塞爾控制點的 y 座標
x 結束點的 x 座標
y 結束點的 y 座標

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.beginPath();
ctx.moveTo(20,20);
ctx.quadraticCurveTo(20,100,200,20);
ctx.stroke();



三次貝塞爾曲線:bezierCurveTo(cp1x,cp1y,cp2x,cp2y,x,y) 方法通過使用表示三次貝塞爾曲線的指定控制點,向當前路徑添加一個點。

參數 描述
cp1x 第一個貝塞爾控制點的 x 座標
cp1y 第一個貝塞爾控制點的 y 座標
cp2x 第二個貝塞爾控制點的 x 座標
cp2y 第二個貝塞爾控制點的 y 座標
x 結束點的 x 座標
y 結束點的 y 座標

三次貝塞爾曲線需要三個點。前兩個點是用於三次貝塞爾計算中的控制點,第三個點是曲線的結束點。曲線的開始點是當前路徑中最後一個點。如果路徑不存在,那麼請使用 beginPath() 和 moveTo() 方法來定義開始點。


  • 開始點:moveTo(20,20)
  • 控制點 1:bezierCurveTo(20,100,200,100,200,20)
  • 控制點 2:bezierCurveTo(20,100,200,100,200,20)
  • 結束點:bezierCurveTo(20,100,200,100,200,20)

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.beginPath();
ctx.moveTo(20,20);
ctx.bezierCurveTo(20,100,200,100,200,20);
ctx.stroke();


圓弧線:arc(x,y,r,sangle,eangle,counterclockwise) 方法創建弧/曲線(用於創建圓或部分圓)。

參數 描述
x 圓的中心的 x 座標。
y 圓的中心的 y 座標。
r 圓的半徑。
sAngle 起始角,以弧度計。(弧的圓形的三點鐘位置是 0 度)。
eAngle 結束角,以弧度計。
counterclockwise 可選。規定應該逆時針還是順時針繪圖。False = 順時針,true = 逆時針。


var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.beginPath();
ctx.arc(100,75,50,0,2*Math.PI);
ctx.stroke();
  • 中心:arc(100,75,50,0*Math.PI,1.5*Math.PI)
  • 起始角:arc(100,75,50,0,1.5*Math.PI)
  • 結束角:arc(100,7


兩切線之間的弧:---arcTo(x1,y1,x2,y2,r) 方法在畫布上創建介於兩個切線之間的弧/曲線。

參數 描述
x1 弧的起點的 x 座標
y1 弧的起點的 y 座標
x2 弧的終點的 x 座標
y2 弧的終點的 y 座標
r 弧的半徑

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.beginPath();
ctx.beginPath();
ctx.moveTo(20,20);           // 創建開始點
ctx.lineTo(100,20);          // 創建水平線
ctx.arcTo(150,20,150,70,50); // 創建弧
ctx.lineTo(150,120);         // 創建垂直線
ctx.stroke();                // 進行繪製


(4) 剪切畫布----clip()

clip() 方法從原始畫布中剪切任意形狀和尺寸。

提示:一旦剪切了某個區域,則所有之後的繪圖都會被限制在被剪切的區域內(不能訪問畫布上的其他區域)。您也可以在使用 clip() 方法前通過使用 save() 方法對當前畫布區域進行保存,並在以後的任意時間對其進行恢復(通過 restore() 方法)。


var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
// 剪切矩形區域
ctx.rect(50,20,200,120);
ctx.stroke();
ctx.clip();
// 在 clip() 之後繪製綠色矩形
ctx.fillStyle="green";
ctx.fillRect(0,0,150,100);





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章