HTML5 Canvas 詳解
什麼是 Canvas?
HTML5 的 canvas 元素使用 JavaScript 在網頁上繪製影象。
注:不過,<canvas> 元素本身並沒有繪製能力(它僅僅是圖形的容器) - 您必須使用指令碼來完成實際的繪圖任務。
建立 Canvas 元素
在頁面中新增canvas 元素
<canvas id="myCanvas" width="200" height="100">
Your browser does not support the canvas element.
</canvas>
通過 JavaScript 來繪製
例項--矩形
<script type="text/javascript">
var c=document.getElementById("myCanvas"); //javascript使用id來尋找canvas元素
var cxt=c.getContext("2d"); // getContext("2d") 物件是內建的html5物件,擁有多種繪畫路徑、矩形、圓形、字元以及新增影象的方法。
cxt.fillStyle="#FF0000"; // fillStyle 設定或返回用於填充繪畫的顏色、漸變或模式
cxt.fillRect(0,0,150,75); // fillRect 繪製“被填充”的矩形 fillRect(x,y,width,height)
</script>
例項--線條
<script type="text/javascript">
var c=document.getElementById("myCanvas"); //javascript使用id來尋找canvas元素
var cxt=c.getContext("2d"); // getContext("2d") 物件是內建的html5物件,擁有多種繪畫路徑、矩形、圓形、字元以及新增影象的方法。
cxt.moveTo(10,10); // moveTo 把路徑移動到畫布中的指定點,不建立線條
cxt.lineTo(150,50); // lineTo 新增一個新點,然後在畫布中建立從該點到最後指定點的線條 , lineTo(x,y) x、y座標
cxt.lineTo(10,50); // 最後指定的點
var gradient=ctx.createLinearGradient(0,0,170,0); // createLinearGradient(x0,y0,x1,y1); x0,y0 為漸變開始點的xy座標 x1,y2為漸變結束點的xy座標
gradient.addColorStop("0","magenta");
gradient.addColorStop("0.5","blue");
gradient.addColorStop("1.0","red");
ctx.strokeStyle=gradient; // 用漸變進行填充
cxt.stroke(); // strokeTo 繪製已定義的路徑
</script>
例項--圓形 通過規定尺寸、顏色、位置來繪製一個圖
<script type="text/javascript">
var c=document.getElementById("myCanvas"); //javascript使用id來尋找canvas元素
var cxt=c.getContext("2d"); // getContext("2d") 物件是內建的html5物件,擁有多種繪畫路徑、矩形、圓形、字元以及新增影象的方法。
cxt.fillStyle="#FF0000"; // fillStyle 設定或返回用於填充繪畫的顏色、漸變或模式
cxt.beginPath(); // gebinPath() 起始一條路徑,或重置當前路徑。
cxt.arc(70,18,15,0,Math.PI*2,true); // 建立弧/曲線(用於建立圓形或部分圓)
cxt.closePath(); //closePath()方法建立從當前點回到起始點的路徑。
cxt.fill(); // 填充當前繪畫(路徑)
</script>
getContext() 屬性和方法
顏色、樣式和陰影
屬性 | 描述 |
---|---|
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() |
瀏覽器支援
Internet Explorer 9、Firefox、Opera、Chrome 以及 Safari 支援 <canvas> 及其屬性和方法。
註釋:Internet Explorer 8 以及更早的版本不支援 <canvas> 元素。
參考文獻:http://www.w3school.com.cn/tags/html_ref_canvas.asp
https://developer.mozilla.org/zh-CN/docs/Web/API/HTMLCanvasElement/getContext
總結: HTML5 <canvas> 標籤用於繪製影象、但本身沒有繪製能力,需要使用指令碼來完成繪圖。getContext()方法可返回物件,該物件提供了用於在畫布上繪圖的方法和屬性。
相關文章
- Canvas API 詳解CanvasAPI
- Html5 canvas中width、height和style的寬高區別詳解HTMLCanvas
- canvas closePath()方法詳解Canvas
- canvas arc()方法詳解Canvas
- canvas 繪製文字詳解Canvas
- HTML5(五)——Canvas APIHTMLCanvasAPI
- HTML5系列之canvas用法HTMLCanvas
- HTML5 video audio 元素詳解HTMLIDE
- canvas路徑與子路徑詳解Canvas
- Html5 canvas創意特效合集HTMLCanvas特效
- HTML5常見標籤詳解HTML
- 【黑科技】React-canvas助力HTML5ReactCanvasHTML
- HTML5的SVG和Canvas的使用HTMLSVGCanvas
- HTML5原生拖拽/拖放 Drag & Drop 詳解HTML
- 使用 HTML5 Canvas 實現簽名功能HTMLCanvas
- 用HTML5的canvas畫太陽系HTMLCanvas
- 詳解選擇html5建站的優勢HTML
- Html5 Canvas動畫基礎(碰撞檢測)HTMLCanvas動畫
- HTML5學習之Canvas基礎知識HTMLCanvas
- html5中canvas元素建立畫布介紹HTMLCanvas
- JavaScript之類操作:HTML5 canvas多分屏示例JavaScriptHTMLCanvas
- 基於 Canvas 的 HTML5 文字動畫特效CanvasHTML動畫特效
- 超酷!!HTML5 Canvas 水流樣式 Loading 動畫HTMLCanvas動畫
- HTML5 Canvas(實戰:繪製餅圖2 Tooltip)HTMLCanvas
- 基於 HTML5 Canvas 的元素週期表展示HTMLCanvas
- 基於 HTML5 Canvas 實現文字動畫特效HTMLCanvas動畫特效
- 基於 HTML5 Canvas 的樓宇自控系統HTMLCanvas
- HTML5 Canvas 超逼真煙花綻放動畫HTMLCanvas動畫
- HTML5標籤HTMLCollection和NodeList的區別詳解HTML
- HTML5離線儲存Manifest原理及使用詳解HTML
- HTML5本地儲存localStorage與sessionStorage詳解HTMLSession
- 高效能渲染——詳解Html Canvas的優勢與效能HTMLCanvas
- Blob實現與File DataURL canvas相互轉換示例詳解Canvas
- 基於 HTML5 Canvas 的拓撲元件 ToolTip 應用HTMLCanvas元件
- 基於 HTML5 Canvas 的可互動旋鈕元件HTMLCanvas元件
- 基於 HTML5 Canvas 的元素週期表的展示HTMLCanvas
- 基於 HTML5 Canvas 實現的文字動畫特效HTMLCanvas動畫特效
- 快速建立 HTML5 Canvas 電信網路拓撲圖HTMLCanvas