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(請求數(shù)據(jù)刪除數(shù)據(jù))
本篇文章主要介紹了在vue-cli項(xiàng)目中使用mockjs(請求數(shù)據(jù)刪除數(shù)據(jù)),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10vue+express 構(gòu)建后臺(tái)管理系統(tǒng)的示例代碼
這篇文章主要介紹了vue+express 構(gòu)建后臺(tái)管理系統(tǒng)的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-07-07vue3 el-pagination 將組件中英文‘goto’ 修改 為&nbs
這篇文章主要介紹了vue3 el-pagination 將組件中英文‘goto’ 修改 為 中文到‘第幾’,通過實(shí)例代碼介紹了vue3項(xiàng)目之Pagination 組件,感興趣的朋友跟隨小編一起看看吧2024-02-02vue雙向數(shù)據(jù)綁定原理分析、vue2和vue3原理的不同點(diǎn)
這篇文章主要介紹了vue雙向數(shù)據(jù)綁定原理分析、vue2和vue3原理的不同點(diǎn),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12vue3使用vuedraggable實(shí)現(xiàn)拖拽功能
這篇文章主要為大家詳細(xì)介紹了vue3使用vuedraggable實(shí)現(xiàn)拖拽功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04