微信小程序 繪圖之餅圖實(shí)現(xiàn)
微信小程序的推出,無疑將會(huì)在移動(dòng)互聯(lián)網(wǎng)行業(yè)里再次掀起風(fēng)浪。有人會(huì)質(zhì)疑小程序會(huì)不會(huì)火, 會(huì)不會(huì)火我不知道, 看微信的用戶量即可明白一切。這里就先學(xué)習(xí)下微信小程序繪圖的功能實(shí)現(xiàn)。
官方文檔:https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-canvas.html
思路是先畫第一段弧,然后連線回圓心,關(guān)閉路徑,注意不需要連線到起始位,用fill()自動(dòng)閉合到起始點(diǎn),對照Photoshop里路徑轉(zhuǎn)選區(qū)的做法可以有助于理解;第二段弧以前一段弧為起始角度,再回圓心,最后關(guān)閉路徑;第三段弧以前兩段弧之和為起始角度,掃過相應(yīng)比重的弧度;以此類推,完成整圓。
布局文件
<canvas canvas-id="canvas2" style="width:200px;height:200px;border:1px solid #ccc;margin-top:100px;"></canvas>
Javascript文件
Page({ onReady:function(){ // 頁面渲染完成 // 創(chuàng)建上下文 var context = wx.createContext(); // 畫餅圖 // 數(shù)據(jù)源 var array = [20, 30, 40, 40]; var colors = ["#ff0000", "#ffff00", "#0000ff", "#00ff00"]; var total = 0; // 計(jì)算問題 for (index = 0; index < array.length; index++) { total += array[index]; } // 定義圓心坐標(biāo) var point = {x: 100, y: 100}; // 定義半徑大小 var radius = 60; /* 循環(huán)遍歷所有的pie */ for (i = 0; i < array.length; i++) { context.beginPath(); // 起點(diǎn)弧度 var start = 0; if (i > 0) { // 計(jì)算開始弧度是前幾項(xiàng)的總和,即從之前的基礎(chǔ)的上繼續(xù)作畫 for (j = 0; j < i; j++) { start += array[j] / total * 2 * Math.PI; } } console.log("i:" + i); console.log("start:" + start); // 1.先做第一個(gè)pie // 2.畫一條弧,并填充成三角餅pie,前2個(gè)參數(shù)確定圓心,第3參數(shù)為半徑,第4參數(shù)起始旋轉(zhuǎn)弧度數(shù),第5參數(shù)本次掃過的弧度數(shù),第6個(gè)參數(shù)為時(shí)針方向-false為順時(shí)針 context.arc(point.x, point.y, radius, start, array[i] / total * 2 * Math.PI, false); // 3.連線回圓心 context.lineTo(point.x, point.y); // 4.填充樣式 context.setFillStyle(colors[i]); // 5.填充動(dòng)作 context.fill(); context.closePath(); } wx.drawCanvas({ canvasId: 'canvas2', actions: context.getActions() }); } })
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
- 微信小程序 二維碼canvas繪制實(shí)例詳解
- JS繪制微信小程序畫布時(shí)鐘
- 微信小程序 小程序制作及動(dòng)畫(animation樣式)詳解
- 微信小程序的動(dòng)畫效果詳解
- 微信小程序 連續(xù)旋轉(zhuǎn)動(dòng)畫(this.animation.rotate)詳解
- 微信小程序?qū)崿F(xiàn)登錄頁云層漂浮的動(dòng)畫效果
- 微信小程序開發(fā)之a(chǎn)nimation循環(huán)動(dòng)畫實(shí)現(xiàn)的讓云朵飄效果
- 微信小程序開發(fā)animation心跳動(dòng)畫效果
- 微信小程序開發(fā)之麥克風(fēng)動(dòng)畫 幀動(dòng)畫 放大 淡出
- 微信小程序 動(dòng)畫的簡單實(shí)例
- 微信小程序?qū)崿F(xiàn)的涂鴉功能示例【附源碼下載】
相關(guān)文章
基于JavaScript代碼實(shí)現(xiàn)微信掃一掃下載APP
有很多人在做微信的掃一掃下載。但是在微信更新之后微信將該功能給禁止掉了,也不能說是全面禁止吧,因?yàn)轵v訊、微信是一家嘛,通過應(yīng)用寶審核的應(yīng)用好像還是可以通過掃一掃直接下載的,下面通過本篇文章給大家介紹微信掃一掃下載app的代碼片段,感興趣的朋友一起看看吧2015-12-12umi插件開發(fā)仿dumi項(xiàng)目實(shí)現(xiàn)頁面布局詳解
這篇文章主要為大家介紹了umi插件開發(fā)仿dumi項(xiàng)目實(shí)現(xiàn)頁面布局詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01Three.js概述和基礎(chǔ)知識(shí)學(xué)習(xí)
這篇文章主要為大家介紹了Three.js概述和基礎(chǔ)知識(shí)學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05JS實(shí)現(xiàn)一個(gè)可以當(dāng)鏡子照的?Button
這篇文章主要介紹了JS實(shí)現(xiàn)一個(gè)可以當(dāng)鏡子照的?Button的方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03WindiCSS實(shí)現(xiàn)加載windi.config.ts配置文件詳解
這篇文章主要為大家介紹了WindiCSS實(shí)現(xiàn)加載windi.config.ts配置文件詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02微信小程序 (一)新建項(xiàng)目hello WeApp 詳細(xì)介紹
這篇文章主要介紹了微信小程序 (一)hello WeApp 詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2016-09-09