我的编程空间,编程开发者的网络收藏夹
学习永远不晚

小程序圆形进度条及面积图实现的方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

小程序圆形进度条及面积图实现的方法

前言

以下两个图可以用来展示完成进度或者进度详情,图1用的是css来绘制进度条,图2用canvas来绘制面积图。

效果预览

圆形进度条

传进去的有三个参数

字段意思
currentVal当前值
maxVal最大值
status1 上涨 | 2 下跌
<circle 
    :maxVal="maxVal" 
    :currentVal="currentVal" 
    :status="2"
/>

重点就是左右各画一半然后利用transform: rotate()旋转隐藏起来,接着利用传进来的当前值计算进度并进行旋转展示。

左右各一半如下图:

setCircle() {
    const { currentVal, maxVal } = this;
    // NO1
    if (currentVal > maxVal / 2) {
        this.leftRotate = this.formatDegree(maxVal / 2);
        this.rightRotate = this.formatDegree(currentVal - maxVal / 2);
    } else {
        // NO2
        this.leftRotate = this.formatDegree(currentVal);
    }
    this.pointRotate = this.formatDegree(currentVal);
},
// NO3 计算旋转
formatDegree(percent) {
    return -136 + (360 / this.maxVal * percent);
}

说明:

NO1: 如果当前值大于最大值的50%则证明左右两边都需要计算展示进度
NO2: 走到这里则证明当前值小于最大值的一半只需要展示左边进度
NO3: 一个圈360度 / 最大值 * 多少份

关于圆点跟随我这里的做法是设置一个一模一样大小的盒子定位上去,并设置成圆形这样就会和进度条重合,然后根据当前值旋转就能准确跟随在进度条的末端。

面积图

字段意思
currentVal当前值
maxVal最大值
sourceData数值分布情况
<combat 
    :maxVal="maxVal"
    :currentVal="currentVal" 
    :sourceData="sourceData"
/>

我这里的做法是先做个四边形然后进行旋转变成一个棱形在根据传入的数据进行绘制。

// 设置图表信息
async setUppixelRatio() {
    const pixelRatio = await this.getSystemInfo();
    const { canvas: res, ctx } = this;
    let canvas = res.node;
    // 放大canvas 解决模糊问题
    canvas.width = res.width * pixelRatio;
    canvas.height = res.height * pixelRatio;
    this.originX = canvas.width / 2;
    this.originY = canvas.height / 2;
    this.startAngle = Math.PI + Math.PI / this.sourceData.length;
    // 最大值分为若干等分
    this.combatMaxVal = this.maxVal / this.sourceData.length;
    this.fitAngle();
    // 缩小canvas
    ctx.scale(pixelRatio, pixelRatio);
},

在手机上中canvas会变模糊,在这里我们先将canvas放大然后缩小就可以解决模糊的问题了。其他的都是一些画线操作。

最后

源码在这demo以上的两个demo是用uni-app开发的,如果需要运启动得用HBuilder运行。

到此这篇关于小程序圆形进度条及面积图实现的文章就介绍到这了,更多相关小程序圆形进度条内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

小程序圆形进度条及面积图实现的方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android中实现圆形进度条的方法

本篇文章为大家展示了Android中实现圆形进度条的方法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。主要思路是写一个继承ProgressBar的自定义View代码:package com.fun.
2023-05-31

Android 实现自定义圆形进度条的三种常用方法

这篇文章主要介绍了Android 实现自定义圆形进度条的三种常用方法的相关资料,需要的朋友可以参考下
2023-03-01

Android自定义View实现圆形加载进度条效果的方法

这篇文章将为大家详细讲解有关Android自定义View实现圆形加载进度条效果的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。View仿华为圆形加载进度条效果图实现思路可以看出该View可分为三个部分
2023-05-30

Android实现自定义圆形进度条的常用方法有哪些

今天小编给大家分享一下Android实现自定义圆形进度条的常用方法有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、通
2023-07-05

小程序怎么实现下载图片并且显示进度的页面效果

本篇内容介绍了“小程序怎么实现下载图片并且显示进度的页面效果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 图片效果wxmljs1 down
2023-06-26

编程热搜

目录