Canvas具備強大的繪圖功能,能夠經過Javascript控制其上下文對象進行繪圖。瀏覽器
在Canvas上,繪製基本矩形有三種方式:填充、描邊、清楚。
三種API以下:函數
在位置(x,y)處以寬width、高爲height繪製一個填充的矩形。spa
在位置(x,y)處以寬width、高爲height繪製一個矩形邊框,
須要使用當前的strokeStyle,lineWidth,lineJoin以及miterLimit設置。rest
在位置x,y處以寬爲width,高爲height,清楚指定區域並使其徹底透明。code
而後畫幾個矩形,代碼以下:對象
function rect(x,y,w,h) { context.lineWidth = 2; context.strokeStyle = '#000000'; context.strokeRect(x,y,w,h); } function manyrect() { var i=0,j=0; do { rect(i,j,250-4*i,250-4*j); i = i + 5; j = j + 5; }while (i<=125); context.fillStyle = '#000001';
顯示結果以下:圖片
在 Canvas 上下文中繪圖時能夠利用所謂的繪圖堆棧狀態。每一個狀態隨時存儲 Canvas 上下文數據。下面是存儲在狀態堆棧的數據列表:ip
當前路徑和當前位圖受Canvas上下文控制,不屬於保存的狀態。it
將一個繪圖狀態進行壓棧和出棧有兩種方法,以下:io
路徑能夠用來在畫布上繪製任何形狀。路徑就是一系列點以及這些點之間的連線。Canvas上下文只能有一個 「當前」 路徑,當調用context()方法時,不會將它存儲爲當前繪圖狀態的一部分。
路徑的上下文是一個重要概念,它決定了只能變換畫布上的當前路徑。
調用beginPath()函數開始一個路徑,調用closePath()函數結束一個路徑。
基本的路徑經過以下兩個方法控制:
直線還能夠設置不一樣的屬性,具體以下:
lineCap 屬性。
定義上下文中線的端點,能夠有如下三個值。
lineJoin 屬性。
定義兩條線相交處產生的拐角,稱爲鏈接。在鏈接處建立一個填充三角形,能夠使用lineJoin設置它的基本屬性。
線寬
lineWidth定義線的寬度(默認值爲10)。
筆觸樣式
strokeStyle定義線和形狀邊框的顏色和樣式。
畫一個簡單的直線,代碼以下:
function line() { context.lineWidth = 10; context.beginPath(); context.moveTo(0,0); context.lineTo(100,0); context.lineTo(100,100); context.stroke(); context.closePath(); }
顯示結果以下:
有兩種函數能夠繪製弧線,以下:
x,y定義圓心的位置,radius定義弧線的半徑。startAngele和endAngle使用弧度值而不是角度值。anticlockwise能夠是true或false這兩個值,用於定義弧線的方向。
只有一些最新的瀏覽器支持arcTo方法,這個函數以給定的半徑繪製一條弧線,圓弧的起點與當前路徑的位置到(x1,y1)點的直線相切,圓弧的終點與(x1,y1)點到(x2,y2)的直線相切。
context.arcTo 方法要求當前路徑至少有一個子路徑。
貝塞爾曲線要比弧線靈活的多,它有立方和平方兩種形式,以下:
Canvas裁剪區域:
結合save()函數和restore函數,Canvas裁剪區域能夠限制路徑及其子路徑的繪製區域,首先經過rect()函數設置一個用來繪圖的矩形區域,而後調用clip()函數把用rect()函數定義的區域設置爲裁剪區域。裁剪區域能夠理解爲繪圖操做的一種蒙版。