canvas學習筆記一

2021-08-08 00:09:42 字數 3125 閱讀 8799

html5新增的canvas標籤可用來繪圖。今天開始學習了一點繪製基礎。

一、繪製三角形

1)canvas繪圖是基於狀態的繪圖,也就是說應該先設定繪圖狀態,再呼叫函式進行繪製

2)座標系:canvas的左上角為原點,向右為x軸正方向,向下為y軸正方向 

繪圖步驟:

1)定義標籤

當前瀏覽器不支援canvas,換個瀏覽器試試   //向下降級,如果瀏覽器支援,會忽略標籤裡的文字

2)在js中初始化

//初始化

var canvas=document.getelementbyid('canvas1');

canvas.width=1024;

canvas.height=500;

//獲取繪圖上下文環境,是進行繪製所需的介面

var context=canvas.getcontext('2d');

我們之後的操作都是基於context物件

3)設定繪圖狀態

context.moveto(50,50);

context.lineto(50,500);

context.lineto(500,50);

context.lineto(50,50);  

context.linewidth=5;

context.strokestyle='red'; //邊框顏色

4)呼叫繪製函式

context.stroke();  //繪製,用線來繪製輪廓
效果圖:

二、簡單的繪製了乙個三角形,那如果想在乙個canvas裡邊繪製兩個圖形怎麼辦勒?

太簡單了,在重新重複一下上面的操作就好了嘛!

context.moveto(50,50);

context.lineto(50,500);

context.lineto(500,50);

context.lineto(50,50);

context.linewidth=5;

context.strokestyle='red'; //邊框顏色

context.stroke(); //繪製

//直線

context.moveto(100,100);

context.lineto(500,500);

context.strokestyle='blue';
context.stroke();
但是效果圖是?

誒,這是怎麼回事勒?怎麼兩個都是藍色,而且線寬都是5?

這裡就要回到我們最開始說的canva是基於狀態繪圖了,再結束了第一次繪圖之後,執行第二次繪圖時,會將頁面上的context

設定的狀態都執行一次,所以第二次繪圖會把第乙個三角形覆蓋,,並且使用了邊框顏色也會blue替換了, 而之前的線寬狀態也會繪製到直線處.。

如何解決這個問題,使得兩次繪圖互不影響勒?

需要用到函式:

beginpath() 新建一條路徑

closepath() 閉合這條路徑

閉合路徑之後圖形繪製命令會指向這條路徑

context.beginpath();

context.moveto(50,50);

context.lineto(50,500);

context.lineto(500,50);

context.lineto(50,50);

context.closepath();

context.linewidth=5;

context.strokestyle='red'; //邊框顏色

context.stroke(); //繪製

context.beginpath();

context.moveto(100,100);

context.lineto(500,500);

context.closepath();

context.strokestyle='blue';

context.stroke(); //繪製,通過線條來繪製圖形輪廓

效果如圖:

三、填充圖形

context.fillstyle指定圖形填充顏色,   context.fill()執行實心繪圖

context.beginpath();

context.moveto(50,50);

context.lineto(50,500);

context.lineto(500,50);

context.lineto(50,50);

context.closepath();

context.linewidth=5;

context.strokestyle='red'; //邊框顏色

context.stroke(); //繪製

context.fillstyle='green';

context.fill();

效果如圖:

感覺**不對勒?三角形的邊框線寬沒有5。

把fill和stroke的命令調整一下順序即可。

聽課來自慕課網

Canvas 學習筆記(一)

一直沒有系統的去學習一下canvas,都是在用到的時候一邊google一邊使用,最近工作上的事情告一段落,就決定跟著mdn學習一下canvas。在學習之前,首先了解一下canvas的背景知識。以下內容引用自 mdn canvas,中文翻譯為畫布,canvas的出現為web開發者帶了新一輪的高潮,利用...

canvas學習筆記一

為了研究pixi庫,就順帶從頭到位學習下canvas吧 var webgl function catch e getcontext方法指定引數2d,表示該canvas物件用於生成2d圖案 即平面圖案 如果引數是3d,就表示用於生成3d影象 即立體圖案 這部分實際上單獨叫做webgl api 繪製路徑...

canvas學習筆記(一)

canvas是html5的新標籤,一般稱為 畫布 通過js 在這個 畫布 上製作各種各樣的圖形 絢麗的效果等等。現在開始一步一步了解canvas 首先,需要在html中新增乙個,一般來說,我們可以在canvas標籤內新增其他元素,對於不相容canvas的瀏覽器,就會把canvas標籤內當元素呈現出來...