canvas

什么是 canvas?

HTML5 的 Canvas 元素使用 JavaScript 在網(wǎng)頁上繪制圖像。
畫布是一個矩形區(qū)域,你可以控制其每一像素。
canvas 擁有多種繪制路徑、矩形、圓形、字符以及添加圖像的方法。

創(chuàng)建 Canvas 元素

向 HTML5 頁面添加 Canvas 元素。
規(guī)定元素的 id、寬度和高度:(相當于我們創(chuàng)建了一塊畫布~)

<canvas id="myCanvas" width="200" height="100" style="border:1px solid #000000;">
</canvas>

通過 JavaScript 來繪制

Canvas 元素本身是沒有繪圖能力的。所有的繪制工作必須在 JavaScript 內(nèi)部完成:

//首先,找到 <canvas> 元素:
var c=document.getElementById("myCanvas");
//然后,獲取2d上下文對象
var ctx = c.getContext("2d");

//getContext("2d") 對象是內(nèi)建的 HTML5 對象,擁有多種繪制路徑、矩形、圓形、字符以及添加圖像的方法。

//下面的兩行代碼繪制一個紅色的矩形:
ctx.fillStyle="#FF0000";
ctx.fillRect(0,0,150,75);
//設(shè)置fillStyle屬性可以是CSS顏色,漸變,或圖案。fillStyle 默認設(shè)置是#000000(黑色)。

//fillRect(x,y,width,height) 方法定義了矩形當前的填充方式。

Canvas 坐標

canvas 是一個二維網(wǎng)格。
canvas 的左上角坐標為 (0,0)
上面的 fillRect 方法擁有參數(shù) (0,0,150,75)。
意思是:在畫布上繪制 150x75 的矩形,從左上角開始 (0,0)。


x y.png

下面是一些方法

1. 開啟新路徑

ctx.beginPath();

2. 起始點

x是橫坐標,y是縱坐標
ctx.moveTo(x, y);

3. 路徑

x是橫坐標,y是縱坐標
ctx.lineTo(x, y)

4. 閉合路徑

ctx.closePath()

5. 描邊與填充

ctx.stroke();//線條類的使用
ctx.fill();//形狀類的使用

6. 設(shè)置描邊和填充的顏色

ctx.strokeStyle = '顏色';
ctx.fillStyle = '顏色';

7. 清除畫布

ctx.clearRect(x, y, width, height);

8.文本

font - 定義字體
fillText(text,x,y) - 在 canvas 上繪制實心的文本
strokeText(text,x,y) - 在 canvas 上繪制空心的文本
ctx.textAlign 文本水平對齊方式:left right center
ctx.textBaseline 文本垂直對齊方式:top middel bottom
如:

ctx.font="30px Arial";//使用 "Arial" 字體在畫布上繪制一個高 30px 的文字
ctx.fillText("Hello World",10,50);//(實心)
ctx.strokeText("Hello World",10,50);//(空心)
線的樣式
  1. 線的寬度
    ctx.lineWidth = 線的寬度

  2. 線帽(線條兩端是什么樣子)
    ctx.lineCap = 'butt'默認
    round: 半圓
    square: 方形

圓心:x, y
blur: 半徑
start,end: 起始角度,結(jié)束角度
boolean: 是否為逆時針(true), 默認順時針(false))(可選)
ctx.arc(x, y, blur, start, end, boolean)

cxt.arc(500,210,100,0,2*Math.PI);//PI就是圓周率π,PI是弧度制的π,也就是180°
所以,Math.PI = 3.14 = 180°
漸變

漸變可以填充在矩形, 圓形, 線條, 文本等等, 各種形狀可以自己定義不同的顏色。
以下有兩種不同的方式來設(shè)置Canvas漸變:
· createLinearGradient(x1, y1, x2, y2) 創(chuàng)建線性漸變
接受 4 個參分別表示漸變的起點 (x1,y1) 與終點 (x2,y2)。
· createRadialGradient(x1, y1, r1, x2, y2, r2) 創(chuàng)建一個徑向/圓漸變
接受 6 個參數(shù),前三個定義一個以 (x1,y1) 為原點,半徑為 r1 的圓,后三個參數(shù)則定義另一個以 (x2,y2) 為原點,半徑為 r2 的圓。
示例:
var lineargradient = ctx.createLinearGradient(0,0,150,150);
var radialgradient = ctx.createRadialGradient(75,75,0,75,75,100);
當我們使用漸變對象,必須使用兩種或兩種以上的停止顏色。

addColorStop()方法指定顏色停止,參數(shù)使用坐標來描述,可以是0至1.

使用漸變,設(shè)置fillStyle或strokeStyle的值為 漸變,然后繪制形狀,如矩形,文本,或一條線。


// 創(chuàng)建漸變
var grd=ctx.createLinearGradient(0,0,200,0);
grd.addColorStop(0,"red");
grd.addColorStop(1,"white");
 
// 填充漸變
ctx.fillStyle=grd;
ctx.fillRect(10,10,150,80);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、canvas簡介 1.1 什么是canvas?(了解) 是HTML5提供的一種新標簽 Canvas是一個矩形區(qū)...
    J_L_L閱讀 1,671評論 0 4
  • 驗證瀏覽器是否支持 Your browser does not support HTML5 Canvas. f...
    shuaiutopia閱讀 2,724評論 0 0
  • ??HTML5 添加的最受歡迎的功能就是 元素。這個元素負責在頁面中設(shè)定一個區(qū)域,然后就可以通過 JavaScri...
    霜天曉閱讀 3,177評論 0 2
  • 你說一一 在你聽完了那段陌生的故事后,你說一一 我不習慣初次見面的表白,還有 你至少該洗凈了酒味再來。 但是,這并...
    4f427883ff9e閱讀 194評論 1 0
  • 寫在前面??本學習教程所有示例代碼見GitHub:https://github.com/selfconzrr/Re...
    Lseafood閱讀 294評論 0 0

友情鏈接更多精彩內(nèi)容