意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

小程序canvas实现一个渐变的环形的代码是什么

来源:恒创科技 编辑:恒创科技编辑部
2024-01-27 21:57:59
在实际应用中,我们有时候会遇到“小程序canvas实现一个渐变的环形的代码是什么”这样的问题,我们该怎样来处理呢?下文给大家介绍了解决方法,希望这篇“小程序canvas实现一个渐变的环形的代码是什么”文章能帮助大家解决问题。


本文实例为大家分享了微信小程序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;
}

以上就是关于“小程序canvas实现一个渐变的环形的代码是什么”的介绍了,感谢各位的阅读,希望这篇文章能帮助大家解决问题。如果想要了解更多知识,欢迎关注恒创科技,小编每天都会为大家更新不同的知识。
上一篇: 如何用JS循环语句求解常见的数学问题 下一篇: 手机怎么远程登录云服务器?