小程序实现圆饼图

效果图

在这里插入图片描述

预备知识

  • CanvasContext.createCircularGradient(number x, number y, number r)
    创建一个圆形的渐变颜色。起点在圆心,终点在圆环。返回的CanvasGradient对象需要使用 CanvasGradient.addColorStop() 来指定渐变点,至少要两个。(详细介绍
  • Canvas的基本绘制API

实现代码

注意:arc()函数中表示角的单位是弧度,不是角度。角度与弧度的js表达式:
弧度=(Math.PI/180)*角度。

function drawPie(canvas, anglesArray, circular, percent) {//画出饼状图var ctx = canvas;//颜色列表const color = [{ start:'rgb(76, 197, 255)' , end:'rgb(81, 122, 255)'  },{ start: 'rgb(38, 236, 161)', end: 'rgb(12, 182, 224)' },{ start: 'rgb(255, 115, 137)', end: 'rgb(230, 75, 161)' }]for (let i = 0; i < anglesArray.length; i++) {let startAngle;let endAngle;if (i == 0) {startAngle = transformAngle(0);endAngle = transformAngle(anglesArray[i] - 1);}else {let start = 0;for (let j = 0; j < i; j++) {start += anglesArray[j];}startAngle = transformAngle(start);endAngle = transformAngle(start + anglesArray[i] - 1);}ctx.beginPath();ctx.arc(circular.x, circular.y, circular.radius, startAngle, endAngle);ctx.lineTo(circular.x, circular.y);ctx.closePath();//填充渐变色let gra = ctx.createCircularGradient(circular.x, circular.y, circular.radius);gra.addColorStop(0, color[i].start)gra.addColorStop(1, color[i].end);ctx.setFillStyle(gra)ctx.fill();}//绘制中间的空白圆ctx.beginPath();ctx.arc(circular.x, circular.y, circular.radius * percent, 0, 360);ctx.fillStyle = "white";ctx.fill();ctx.draw();
}
function transformAngle(angle) {//计算弧度return (Math.PI / 180) * angle
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/330305.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一分钟开启Tomcat https支持

转载自 一分钟开启Tomcat https支持1、修改配置文件 打开tomcat/conf/server.xml配置文件&#xff0c;把下面这段配置注释取消掉&#xff0c; keystorePass为证书密钥需要手动添加&#xff0c;创建证书时指定的。 <Connector port"8443" protocol"org.apache…

转:在eclipse中搭建maven工程(第二种方法)

转自 &#xff1a; https://blog.csdn.net/bug_moving/article/details/54178092&#xff1b; 第一种方法见前面的博客 用Maven创建web项目&#xff08;详细步骤&#xff09; maven-3.3.9 下载之后就是配置环境变量&#xff0c;可以去百度一哈&#xff0c;用MAVEN_HOME配置…

Spring Boot - Profile不同环境配置

转载自 Spring Boot - Profile不同环境配置Profile是什么 Profile我也找不出合适的中文来定义&#xff0c;简单来说&#xff0c;Profile就是Spring Boot可以对不同环境或者指令来读取不同的配置文件。 Profile使用 假如有开发、测试、生产三个不同的环境&#xff0c;需要定义三…

Java Springboot应用部署

流程&#xff1a; 在pom.xml中加入以下配置 (引入springboot打包插件 spring-boot-maven-plugin ): <project ...><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin<…

转:Tomcat启动失败 提示Server Tomcat v7.0 Server at localhost failed to start.六种解决方法

转&#xff1a;https://my.oschina.net/u/4391471/blog/3298034 Tomcat启动失败&#xff0c;提示Server Tomcat v7.0 Server at localhost failed to start 在一次查看自己以前写过的项目中&#xff0c;运行tomcat失败&#xff0c;出现如图提示 然而自己之前的项目运行时候都…

Java SE 知识点

数组(Array)和列表(ArrayList)的区别&#xff1f;什么时候应该使用Array而不是ArrayList&#xff1f; Array和ArrayList的不同点&#xff1a; Array可以包含基本类型和对象类型&#xff0c;ArrayList只能包含对象类型。Array大小是固定的&#xff0c;ArrayList的大小是动态变化…

Spring Boot定制启动图案

转载自 Spring Boot定制启动图案启动图案 Spring Boot在启动的时候会显示一个默认的Spring的图案&#xff0c;对应的类为SpringBootBanner。. ____ _ __ _ _ /\\ / ____ __ _ _(_)_ __ __ _ \ \ \ \( ( )\___ | _ | _| | _ \/ _ | \ \ \ \ \\/ ___)| |…

servlet设置cookie实验

【README】 本文旨在 通过servlet 设置cookie &#xff0c;查看cookie长什么样子&#xff0c;来达到了解cookie的目的&#xff1b; cookie作用&#xff1a; 因为http协议是无状态的&#xff0c;要想维护web访问的状态&#xff0c;就需要使用专门的技术解决。cookie 是一种在客…

Java 集合类

List&#xff1a;一种有序列表的集合Set&#xff1a;一种保证没有重复元素的集合Map&#xff1a;一种通过键值&#xff08;key-value&#xff09;查找的映射表集合 Java集合的设计有几个特点&#xff1a;一是实现了接口和实现类相分离&#xff0c;例如&#xff0c;有序表的接口…

Spring MVC常用注解,你会几个?

转载自 Spring MVC常用注解&#xff0c;你会几个&#xff1f;常用注解 Controller 注解一个类表示控制器&#xff0c;Spring MVC会自动扫描标注了这个注解的类。 RequestMapping 请求路径映射&#xff0c;可以标注类&#xff0c;也可以是方法&#xff0c;可以指定请求类型&…

转:常用的几种加密算法以及java实现

转自&#xff1a; https://blog.csdn.net/wqwqwqwq403/article/details/103948952 工作中经常会接触到一些加密算法&#xff0c;比如说base64、MD5、DES、AES等等&#xff0c;那么这些算法到底有什么区别以及具体的应用场景是什么呢&#xff0c;下面就做个简要的梳理。 一、什…

JAVA 实现 JWT

引入JWT依赖,由于是基于Java&#xff0c;所以需要的是java-jwt <dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>3.4.0</version> </dependency>自定义注解用于判断是否需要验证 用来跳…

SaaS,PaaS,IaaS都是什么鬼

转载自 SaaS,PaaS,IaaS都是什么鬼IaaS Infrastructure as a Service&#xff0c;基础设施即服务。 假如你现在要做一个网站&#xff0c;你肯定要有一台服务器或者虚拟机&#xff0c;要么自己搭建&#xff0c;要么买服务器运营商的。说白了&#xff0c;IaaS就是解决企业硬件问题…

转:什么是 Base64编码

转&#xff1a; https://developer.aliyun.com/article/763589 一、定义 Base64编码 是一种基于 64 个可打印字符来表示二进制数据的方法。目前 Base64 已经成为网络上常见的传输 8 位二进制字节代码的编码方式之一。为什么会有 Base64 编码呢&#xff1f;&#xff08;Base…

什么是Spring Boot?

转载自 什么是Spring Boot? 什么是Spring Boot? Spring Boot是Spring开源组织下的子项目&#xff0c;是Spring组件一站式解决方案&#xff0c;主要是简化了使用Spring的难度&#xff0c;简省了繁重的配置&#xff0c;提供了各种启动器&#xff0c;开发者能快速上手。 官方网站…

JAVA并发知识

JAVA并发知识一、什么是线程和进程&#xff1f;二、线程与进程的关系&#xff0c;区别及优缺点&#xff1f;三、并发和并行有什么区别&#xff1f;四、为什么要使用多线程&#xff1f;五、使用多线程可能会带来什么问题&#xff1f;六、说说线程的生命周期和状态。七、java 中如…

servlet session持久化

1、 session持久化是什么&#xff1f; web服务器把 session中存储的属性存储到本地磁盘或数据库中&#xff1b; 2、为什么需要持久化&#xff1f; 因为 session是服务器维护会话状态的对象&#xff0c;即便客户端关闭连接或客户端长时间没有访问&#xff0c;服务器还依然存储…

高并发解决方案

扩容 垂直扩容&#xff1a;提高系统部件能力水平扩容&#xff1a;增加更多系统成员&#xff08;增加服务器数量&#xff09; 数据库扩容系统属于 读操作 频繁型&#xff0c;可采用垂直扩容 采用 memcache&#xff0c; redis&#xff0c; CDN等缓存系统属于 写操作 频繁型&#…

servlet session 跟踪用户上次访问时间

1、是什么&#xff1f; 上次访问时间&#xff1b;即用户最近一次登录时间&#xff1b; 2、为什么&#xff1f; 为了提示用户登录或访问记录&#xff0c;提高安全性&#xff0c;如qq登录提示&#xff1b; 3、怎么做&#xff1f; 通过cookie 实现&#xff1b; 用户第1次登录&…

Spring MVC表单防重复提交

转载自 Spring MVC表单防重复提交 利用Spring MVC的过滤器及token传递验证来实现表单防重复提交。 创建注解 Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) Documented public interface Token {boolean create() default false;boolean remove() default f…