1. 程式人生 > >HTML 5 Canvas 繪製圖形影象

HTML 5 Canvas 繪製圖形影象

HTML5 Canvas

HTML5 <canvas> 標籤定義圖形,比如圖表和其他影象,必須使用指令碼來繪製圖形。<canvas> 是 HTML 5 中的新標籤。

<canvas> 元素本身並沒有繪製能力,它僅僅是圖形的容器/畫布,必須使用指令碼(JavaScript)來完成實際的繪圖任務。

getContext() 方法可返回一個物件,該物件提供了用於在畫布上繪圖的方法和屬性。 getContext("2d")  物件屬性和方法,可用於在畫布上繪製文字、線條、矩形、圓形等二維影象。

表格中的數字表示支援 <canvas> 元素的第一個瀏覽器版本號:

元素 Chrome IE Firefox Safari opera
<canvas> 4.0 9.0 2.0 3.1 9.0

<cavas> 元素屬於行內元素。

建立一個畫布(Canvas)

一個畫布容器 <canvas>  在網頁中是一個矩形框, 預設情況下 <canvas> 元素沒有邊框和內容。<canvas>簡單例項如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <title>Cavas 演示</title>
</head>
<body>
<canvas id="myCanvas1" width="200" height="100" style="border:1px solid #000000;">
    瀏覽器不支援 HTML5 canvas
</canvas>
<canvas id="myCanvas2" width="200" height="100" style="border:1px solid #f00;">
    瀏覽器不支援 HTML5 canvas
</canvas>
</body>
</html>

<cavas> 標籤通常需要指定一個 id 屬性 (因為指令碼中經常引用), width 和 height 屬性定義的畫布的大小,可以在 HTML 頁面中使用多個 <canvas> 元素。

JavaScript 繪製圖像

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <title>Cavas 演示</title>

    <!-- JQuery CDN-->
    <script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
    <script type="text/javascript">
        $(function () {
            /**獲取 cavas Dom 物件*/
            var canvasObj = document.getElementById("myCanvas");
            /**獲取 context 物件,該物件提供了用於在畫布上繪圖的方法和屬性
             * 2d 是目前支援的二維影象*/
            var ctx = canvasObj.getContext("2d");
            /**繪製一個紅色的矩形*/
            ctx.fillStyle = "#FF0000";
            ctx.fillRect(0, 0, 150, 75);
        });
    </script>
</head>
<body>
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #000000;">
    瀏覽器不支援 HTML5 canvas
</canvas>
</body>
</html>

設定 fillStyle 屬性可以是 CSS 顏色,漸變,或圖案,fillStyle 預設設定是#000000(黑色),後面會詳細講解。

fillRect(x,y,width,height) 方法繪製“被填充”的矩形,後面會詳細講解。

Canvas 座標

canvas 是一個二維網格,canvas 的左上角座標為 (0,0),如上fillRect (0,0,150,75) 意思是:在畫布上繪製 150x75 的矩形,從左上角開始 (0,0)。

顏色、樣式和陰影

屬性 描述
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()