html5 canvas 實現簡單的畫圖


今天早上看了一下 canvas 前端畫圖,數據可視化, 百度的 echart.js  , d3等 js 庫都已經提供了強大的繪制各種圖形的 API。

下面記錄一下 有關canvas 繪圖的基本知識:

 

<html>
<head >
    <script src ='./aop.js'></script>
</head>
<body>
<canvas id="myCanvas" width="300" height="300" style="border:1px solid #d3d3d3;">
    Your browser does not support the HTML5 canvas tag.
</canvas>
<script>
    var canvas = document.getElementById("myCanvas");
    var ctx = canvas.getContext("2d");

    /*var path1 = new Path2D();
    path1.rect(10, 10, 100,100);
    ctx.stroke(path1);*/

    ctx.rect(10, 10, 200,100);
    ctx.stroke();
</script>
</body>
</html>

 

  

 

Canvas是HTML5新增的組件,它就像一塊幕布,可以用JavaScript在上面繪制各種圖表、動畫等。

沒有Canvas的年代,繪圖只能借助Flash插件實現,頁面不得不用JavaScript和Flash進行交互。有了Canvas,我們就再也不需要Flash了,直接使用JavaScript完成繪制。

一個Canvas定義了一個指定尺寸的矩形框,在這個范圍內我們可以隨意繪制:

<canvas id="test-canvas" width="300" height="200"></canvas>

  由於瀏覽器對HTML5標准支持不一致,所以,通常在<canvas>內部添加一些說明性HTML代碼,如果瀏覽器支持Canvas,它將忽略<canvas>內部的HTML,如果瀏覽器不支持Canvas,它將顯示<canvas>內部的HTML:

<canvas id="test-stock" width="300" height="200">
      <p>你的瀏覽器不支持Canvas</p>
</canvas>

  在使用Canvas前,用canvas.getContext來測試瀏覽器是否支持Canvas:

<!-- HTML代碼 -->
<canvas id="test-canvas" width="200" heigth="100">
    <p>你的瀏覽器不支持Canvas</p>
</canvas>
<script>
"use strict";
var canvas = document.getElementById('test-canvas');
if (canvas.getContext) {
    alert('你的瀏覽器支持Canvas!');
} else {
    alert('你的瀏覽器不支持Canvas!');
}
</script>

  

HTML5 <canvas> 標簽用於繪制圖像(通過腳本,通常是 JavaScript)。

不過,<canvas> 元素本身並沒有繪制能力(它僅僅是圖形的容器) - 您必須使用腳本來完成實際的繪圖任務。

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

本手冊提供完整的 getContext("2d") 對象屬性和方法,可用於在畫布上繪制文本、線條、矩形、圓形等等。

 

顏色、樣式和陰影

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM