Canvas
canvas 最先由Apple引入WebKit,用於Mac OS X 的 Dashboard,後來又在Safari和Google Chrome被實現。 基於 Gecko 1.8的瀏覽器,好比 Firefox 1.5, 一樣支持這個元素。
<canvas> 元素是WhatWG Web applications 1.0規範的一部分,也包含於HTML 5中。javascript
體驗Canvas
什麼是Canvas?
HTML5 的 canvas 元素使用 JavaScript 在網頁上繪製圖像。
畫布是一個矩形區域,您能夠控制其每一像素。
canvas 擁有多種繪製路徑、矩形、圓形、字符以及添加圖像的方法。css
建立Canvas元素
向 HTML5 頁面添加 canvas 元素。
規定元素的 id、寬度和高度:html
<canvas id="myCanvas" width="200" height="100"></canvas>
Canvas座標系
![](http://static.javashuo.com/static/loading.gif)
經過JavaScript來繪製
Canvas的基本使用
圖形繪製
須要理解些概念:java
- 路徑的概念
- 路徑的繪製
- 描邊 stroke()
- 填充 fill()
![](http://static.javashuo.com/static/loading.gif)
- 閉合路徑
- 填充規則(非零環繞)
![](http://static.javashuo.com/static/loading.gif)
- 開啓新的路徑 beginPath()
設置樣式
- 畫筆的狀態
- lineWidth 線寬,默認1px
- lineCap 線末端類型:(butt默認)、round、square
- lineJoin 相交線的拐點 miter(默認)、round、bevel
- strokeStyle 線的顏色
- fillStyle 填充顏色
- setLineDash() 設置虛線
- getLineDash() 獲取虛線寬度集合
- lineDashOffset 設置虛線偏移量(負值向右偏移)
實例練習
- 漸變色繪製
- 鏤空的房子
- 繪製座標網格
- 繪製座標系
- 繪製座標點
- 繪製折線圖
參考文檔
Canvas圖形繪製
矩形繪製
- rect(x,y,w,h) 沒有獨立路徑
- strokeRect(x,y,w,h) 有獨立路徑,不影響別的繪製
- fillRect(x,y,w,h) 有獨立路徑,不影響別的繪製
- clearRect(x,y,w,h) 擦除矩形區域
圓弧繪製
- 弧度概念
- arc()
- x 圓心橫座標
- y 圓心縱座標
- r 半徑
- startAngle 開始角度
- endAngle 結束角度
- anticlockwise 是否逆時針方向繪製(默認false表示順時針;true表示逆時針)
繪製文本
- ctx.font = '微軟雅黑' 設置字體
- strokeText()
- fillText(text,x,y,maxWidth)
- text 要繪製的文本
- x,y 文本繪製的座標(文本左下角)
- maxWidth 設置文本最大寬度,可選參數
- ctx.textAlign文本水平對齊方式,相對繪製座標來講的
- left
- center
- right
- start 默認
- end
- direction屬性css(rtl ltr) start和end於此相關
- 若是是ltr,start和left表現一致
- 若是是rtl,start和right表現一致
- ctx.textBaseline 設置基線(垂直對齊方式 )
- top 文本的基線處於文本的正上方,而且有一段距離
- middle 文本的基線處於文本的正中間
- bottom 文本的基線處於文本的證下方,而且有一段距離
- hanging 文本的基線處於文本的正上方,而且和文本粘合
- alphabetic 默認值,基線處於文本的下方,而且穿過文字
- ideographic 和bottom類似,可是不同
- measureText() 獲取文本寬度obj.width
實例練習
作動畫
繪製圖片
- drawImage()
- 三個參數drawImage(img,x,y)
- img 圖片對象、canvas對象、video對象
- x,y 圖片繪製的左上角
- 五個參數drawImage(img,x,y,w,h)
- img 圖片對象、canvas對象、video對象
- x,y 圖片繪製的左上角
- w,h 圖片繪製尺寸設置(圖片縮放,不是截取)
- 九個參數drawImage(img,x,y,w,h,x1,y1,w1,h1)
- img 圖片對象、canvas對象、video對象
- x,y,w,h 圖片中的一個矩形區域
- x1,y1,w1,h1 畫布中的一個矩形區域
序列幀動畫
座標變換
- 平移 移動畫布的原點
- translate(x,y) 參數表示移動目標點的座標
- 縮放
- 旋轉