应用程序开发公司
软件开发

针对您的项目需求及预算规划量身制定方案

个体/中小企业/集团/政府机构/行业组织 了解详情 了解详情

秀杰实战教程系列《二》:微信小程序绘图课程之饼图

发布时间:2024-01-01 00:00 浏览次数:49

官方文档:https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-canvas.html


思路就是先画第一段弧,然后连线回去圆心,停用路径,特别注意不须要连线至初始位,用fill()自动滑动至初始点,对照Photoshop里路径转回选区的作法可以有利于认知;第二段弧以前一段弧为初始角度,再回去圆心,最后停用路径;第三段弧以前两段弧之和为初始角度,划过适当比重的弧度;以此类推,顺利完成整圆。


布局文件


Javascript文件


Page({


onReady:function(){


// 页面图形顺利完成


// 建立上下文


var context = wx.createContext();


// 画饼图


// 数据源


var array = [20, 30, 40, 40];


var colors = ["#ff0000", "#ffff00", "#0000ff", "#00ff00"];


var total = 0;


// 排序问题


for (index = 0; index < array.length; index++) {


total += array[index];


}


// 定义圆心座标


var point = {x: 100, y: 100};


// 定义半径大小


var radius = 60;


/* 循环结点所有的pie */


for (i = 0; i < array.length; i++) {


context.beginPath();


// 起点弧度


var start = 0;


if (i > 0) {


// 排序已经开始弧度就是前几项的总和,即为从之前的基础的上时稳步作画


for (j = 0; j < i; j++) {


start += array[j] / total * 2 * Math.PI;


}


}


console.log("i:" + i);


console.log("start:" + start);


// 1.先搞第一个pie


// 2.画一条弧,并充填成三角饼pie,前2个参数确认圆心,第3参数为半径,第4参数初始转动弧度数,第5参数本次划过的弧度数,第6个参数为时针方向-false为顺时针


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.充填动作


context.fill();


context.closePath();


}


wx.drawCanvas({


canvasId: 'canvas2',


actions: context.getActions()


});


}


})

TAG标签:
阅读推荐