Javascript學習筆記 Canvas

2021-08-28 08:17:57 字數 1871 閱讀 7136

canvas是html5新增的元件,可以用來繪製各種圖表、動畫等。由於瀏覽器對html5標準支援不一致,通常在使用canvas前,用canvas.getcontext來測試瀏覽器是否支援canvas:

你的瀏覽器不支援canvas

var canvas = document.getelementbyid('test-canvas');

if (canvas.getcontext) else

getcontext('2d')方法讓我們拿到乙個canvasrenderingcontext2d物件,所有的繪圖操作都需要通過這個物件完成。

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

html5還有乙個webgl規範,允許在canvas中繪製3d圖形:

gl = canvas.getcontext("webgl");

繪製圖形

在繪製前,我們先了解一下canvas的座標系統canvas-xy。canvas的座標以左上角為原點,水平向右為x軸,垂直向下為y軸,以畫素為單位,所以每個點都是非負整數。

canvasrenderingcontext2d物件有若干方法來繪製圖形:

var canvas = document.getelementbyid('test-shape-canvas'),

ctx = canvas.getcontext('2d');

ctx.clearrect(0, 0, 200, 200); // 擦除(0,0)位置大小為200x200的矩形,擦除的意思是把該區域變為透明

ctx.fillstyle = '#dddddd'; // 設定顏色

ctx.fillrect(10, 10, 130, 130); // 把(10,10)位置大小為130x130的矩形塗色

// 利用path繪製複雜路徑:

var path=new path2d();

path.arc(75, 75, 50, 0, math.pi*2, true);

path.moveto(110,75);

path.arc(75, 75, 35, 0, math.pi, false);

path.moveto(65, 65);

path.arc(60, 65, 5, 0, math.pi*2, true);

path.moveto(95, 65);

path.arc(90, 65, 5, 0, math.pi*2, true);

ctx.strokestyle = '#0000ff';

ctx.stroke(path);

繪製文字

繪製文字就是在指定的位置輸出文字,可以設定文字的字型、樣式、陰影等,與css完全一致:

var canvas = document.getelementbyid('test-text-canvas'),

ctx = canvas.getcontext('2d');

ctx.clearrect(0, 0, canvas.width, canvas.height);

ctx.shadowoffsetx = 2;

ctx.shadowoffsety = 2;

ctx.shadowblur = 2;

ctx.shadowcolor = '#666666';

ctx.font = '24px arial';

ctx.fillstyle = '#333333';

ctx.filltext('帶陰影的文字', 20, 40);

canvas除了能繪製基本的形狀和文字,還可以實現動畫、縮放、各種濾鏡和畫素轉換等高階操作。如果要實現非常複雜的操作,要考慮以下幾點:

Javascript 學習筆記

如果在生成的html裡面有事件需要傳遞帶特殊字元的引數,處理如下 singletext 輸入 1.singletext value.escapehtml 為 將html編碼 2.singletext value.escapehtml inspect 為 3.在 jsdebugtext innerht...

javascript學習筆記

視窗操作 1改變視窗的位置 window.location 2視窗的歷史操作 previous 3建立新的視窗 window.open url 視窗名稱 視窗特徵字元 細節 不能換行寫 視窗特徵 width,height,yes,no munubar,status,scrollbars,resiza...

javaScript學習筆記

2018 12 26 標題 var num1 10 var num2 0 var result num1 num2 console.log result infinity 表示超出了js的數值範圍 類似高數里的整數除以無窮小的數,得到無窮大的結果。var num1 a var num2 3 或其它n...