vue中使用canvas繪圖詳解
canvas基本使用
HTML5 的 <canvas> 元素使用 JavaScript 在網(wǎng)頁上繪制圖像。
畫布是一個(gè)矩形區(qū)域,您可以控制其每一像素。
canvas 擁有多種繪制路徑、矩形、圓形、字符以及添加圖像的方法。
路徑線段
<template lang="pug">
div
// 規(guī)定矩形區(qū)域的寬和高
<canvas id="myCanvas" width="500" height="300"></canvas>
</template>
<script>
export default {
data() {
return {}
},
mounted() {
this.xianDuan()
},
methods: {
xianDuan(){
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
ctx.moveTo(0,0); // moveTo(x,y) 定義線條開始坐標(biāo)
ctx.lineTo(200,100); // lineTo(x,y) 定義線條結(jié)束坐標(biāo)
ctx.stroke();
},
}
}
</script>運(yùn)行效果:

三角形
- 無填充色
mounted() {
this.sanJiaoXing()
},
methods: {
sanJiaoXing(){
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.moveTo(0, 0);
ctx.lineTo(100, 200);
ctx.lineTo(400, 200);
ctx.lineTo(0, 0);
ctx.stroke(); // 無填充色
},
}運(yùn)行效果:

- 有填充色
mounted() {
this.sanJiaoXing()
},
methods: {
sanJiaoXing(){
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.moveTo(0, 0);
ctx.lineTo(100, 200);
ctx.lineTo(400, 200);
ctx.lineTo(0, 0);
ctx.fill(); // 有填充色
},
}
圓
使用 arc() 方法 繪制一個(gè)圓:
mounted() {
this.yuan()
},
methods: {
yuan() {
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.beginPath();
ctx.arc(95,50,40,0,2*Math.PI); // Math.PI圓周率π = 3.14 = 180°
ctx.stroke();
},
}
- canvas實(shí)現(xiàn)笑臉
mounted() {
this.xiaoLian()
},
methods: {
xiaoLian() {
let canvas = document.getElementById('myCanvas');
let ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.arc(75, 75, 50, 0, Math.PI * 2, true); // 繪制
ctx.moveTo(110, 75);
ctx.arc(75, 75, 35, 0, Math.PI, false); // 口(順時(shí)針)
ctx.moveTo(65, 65);
ctx.arc(60, 65, 5, 0, Math.PI * 2, true); // 左眼
ctx.moveTo(95, 65);
ctx.arc(90, 65, 5, 0, Math.PI * 2, true); // 右眼
ctx.stroke();
},
}
字體
mounted() {
this.ziTi()
},
methods: {
ziTi() {
let canvas = document.getElementById("myCanvas");
let ctx = canvas.getContext("2d");
ctx.font="30px Arial"; // 設(shè)置字體及大小
ctx.fillText("Hello World 泥巴巴", 10, 150); // 實(shí)心文字
ctx.strokeText("Hello World 泥巴巴", 10, 180); // 空心文字
}
}
漸變
mounted() {
this.jianBian()
},
methods: {
jianBian() {
let canvas = document.getElementById("myCanvas");
let ctx = canvas.getContext("2d");
var grd = ctx.createLinearGradient(0, 0, 200,0); // 設(shè)置漸變
grd.addColorStop(0,"red"); // 漸變起始顏色
grd.addColorStop(1,"orange"); // 漸變結(jié)束色
ctx.fillStyle = grd; // 填充色
ctx.fillRect(10,10,200,100); // (x,y,width,height) 矩形坐標(biāo)和寬高
}
}
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解在vue-cli項(xiàng)目中使用mockjs(請(qǐng)求數(shù)據(jù)刪除數(shù)據(jù))
本篇文章主要介紹了在vue-cli項(xiàng)目中使用mockjs(請(qǐng)求數(shù)據(jù)刪除數(shù)據(jù)),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10
vue+express 構(gòu)建后臺(tái)管理系統(tǒng)的示例代碼
這篇文章主要介紹了vue+express 構(gòu)建后臺(tái)管理系統(tǒng)的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-07-07
vue3 el-pagination 將組件中英文‘goto’ 修改 為&nbs
這篇文章主要介紹了vue3 el-pagination 將組件中英文‘goto’ 修改 為 中文到‘第幾’,通過實(shí)例代碼介紹了vue3項(xiàng)目之Pagination 組件,感興趣的朋友跟隨小編一起看看吧2024-02-02
vue3.x項(xiàng)目降級(jí)到vue2.7的解決方案
Vue2.7是Vue2.x的最終次要版本,下面這篇文章主要給大家介紹了關(guān)于vue3.x項(xiàng)目降級(jí)到vue2.7的解決方案,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-03-03
vue雙向數(shù)據(jù)綁定原理分析、vue2和vue3原理的不同點(diǎn)
這篇文章主要介紹了vue雙向數(shù)據(jù)綁定原理分析、vue2和vue3原理的不同點(diǎn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
vue3使用vuedraggable實(shí)現(xiàn)拖拽功能
這篇文章主要為大家詳細(xì)介紹了vue3使用vuedraggable實(shí)現(xiàn)拖拽功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04

