微信小程序canvas实现环形渐变

 更新时间:2022年08月28日 11:55:24   作者:花笙_  
这篇文章主要为大家详细介绍了微信小程序canvas实现环形渐变,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了微信小程序canvas实现环形渐变的具体代码,供大家参考,具体内容如下

这个例子是在微信小程序中写的

效果图

后端返回的数据格式,需要的只有otherInfo里面的数据

wxml

<view>
    <canvas class="progress_bg" canvas-id="{{otherInfo.bgid}}"> </canvas>
    <canvas class="progress_canvas" canvas-id="{{otherInfo.pgid}}"> </canvas>
</view>
<view class="progress_text">
    <text class='progress_info'> {{otherInfo.sumPointNumber || 0}}分</text>
</view>

js

data:{
   otherInfo: {
      bgid: "bgid",
      pgid: "pgid",
      sumPointNumber: 100   // 默认圆环显示的区域,全部显示是100
    }
}

根据接口获取数据,我只截取了需要的部分,赋值到data里面的otherInfo

下面是重要的canvas部分
用arc()方法创建圆,起始角设置为 0,结束角设置为 2*Math.PI(PI就是圆周率π,PI是弧度制的π,也就是180°,所以,Math.PI = 3.14 = 180°,PI是一个浮小数)

drawProgressbg() {
    let w = wx.getSystemInfoSync().screenWidth;
    let that = this;
    let ctx = wx.createCanvasContext(that.data.otherInfo.bgid)
    ctx.setLineWidth(8 * w / 375);
    ctx.setStrokeStyle('#DDEDFA');
    ctx.setLineCap('round');
    ctx.beginPath();
    ctx.arc(80 * w / 375, 80 * w / 375, 65 * w / 375, 0, 2 * Math.PI, false);
    ctx.stroke();
    ctx.draw();
  },
  drawCircle() {
    let w = wx.getSystemInfoSync().screenWidth;
    let that = this;
    let context = wx.createCanvasContext(that.data.otherInfo.pgid);
    context.setLineWidth(8 * w / 375);
    // context.setStrokeStyle('#55A5E6');    不渐变的背景色
    // 环形渐变的背景色
    var my_gradient = context.createLinearGradient(0, 0, 200, 0);
    my_gradient.addColorStop(1, "#FA6400");
    my_gradient.addColorStop(0, "#FFECAF");
    context.strokeStyle = my_gradient;
    context.setLineCap('round');
    context.beginPath();
    context.arc(80 * w / 375, 80 * w / 375, 65 * w / 375, -Math.PI / 2, that.data.otherInfo.sumPointNumber / 50 * Math.PI - Math.PI / 2, false);
    context.stroke();
    context.draw()
  },
  onLoad: function (options) {
    this.getList()   // 获取的数据
    this.drawProgressbg();
    this.drawCircle()
  },

wxss

.progress_bg {
  position: absolute;
  left: 30%;
  width: 300rpx;
  height: 300rpx;
  z-index: 9;
}
.progress_canvas {
  left: 30%;
  width: 300rpx;
  height: 300rpx;
  z-index: 9;
}
.progress_text {
  display: flex; 
  align-items: center;
 justify-content: center;
 margin-top: -23%;
}
.progress_info {
  letter-spacing: 2rpx;
  color: #000;
  font-weight: 600;
  font-size: 38rpx;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • JavaScript实现非常简单实用的下拉菜单效果

    JavaScript实现非常简单实用的下拉菜单效果

    这篇文章主要介绍了JavaScript实现非常简单实用的下拉菜单效果,通过定义显示及隐藏菜单项及鼠标事件调用该函数实现下拉菜单功能,需要的朋友可以参考下
    2015-08-08
  • JS实现DIV高度自适应窗口示例

    JS实现DIV高度自适应窗口示例

    这篇文章主要介绍了JS实现DIV高度自适应窗口的方法,结合完整实例形式分析了JS通过动态操作页面元素属性实现高度自适应的相关技巧,需要的朋友可以参考下
    2017-02-02
  • Ajax高级笔记 JavaScript高级程序设计笔记

    Ajax高级笔记 JavaScript高级程序设计笔记

    这篇文章主要介绍了Ajax高级笔记 JavaScript高级程序设计笔记,需要的朋友可以参考下
    2017-06-06
  • js的表单操作 简单计算器

    js的表单操作 简单计算器

    javascript写的简单的加减乘除计算器,里面涉及到一些方法还是很实用的哦,新手不要错过
    2011-12-12
  • 前端处理文本换行展示4种处理方法

    前端处理文本换行展示4种处理方法

    在处理前端显示后端传递的包含换行符的文本时,可以通过多种方法实现换行显示,这篇文章主要介绍了前端处理文本换行展示4种处理方法,这些方法帮助前端正确展示格式化文本,解决了文本堆叠的问题,需要的朋友可以参考下
    2024-10-10
  • 原生JS实现层叠轮播图

    原生JS实现层叠轮播图

    这篇文章主要为大家详细介绍了原生JS层叠轮播图,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • 微信小程序自定义tabBar在uni-app的适配详解

    微信小程序自定义tabBar在uni-app的适配详解

    这篇文章主要介绍了微信小程序自定义tabBar在uni-app的适配详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • javascript制作网页图片上实现下雨效果

    javascript制作网页图片上实现下雨效果

    这里给大家分享的是一则使用javascript实现在网页图片上下雨的特效,效果非常炫酷,推荐给小伙伴们。
    2015-02-02
  • JavaScript中layim之整合右键菜单的示例代码

    JavaScript中layim之整合右键菜单的示例代码

    这篇文章主要介绍了JavaScript中layim之整合右键菜单的示例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • 小程序上滑下滑效果的示例代码

    小程序上滑下滑效果的示例代码

    本文主要介绍了小程序上滑下滑效果的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01

最新评论