小程序:自定义圆形进度条

circle.wxss:

page {
  width: 100%;
  height: 100%;
  background-color: #fff;
}
  
.circle-box {
  text-align: center;
  margin-top: 10vw;
}

.circle {
  position: absolute;
  left: 0;
  right: 0;
  margin: auto;
}

.draw_btn {
  width: 35vw;
  position: absolute;
  top: 33vw;
  right: 0;
  left: 0;
  margin: auto;
  border: 1px #000 solid;
  border-radius: 5vw;
}`在这里插入代码片`

circle.wxml:

  <view class="wrap">
    <view class="circle-box">
      <canvas class="circle" style="z-index: -99; width:200px; height:200px;" canvas-id="canvasCircle">
      </canvas>
      <canvas class="circle" style="width:200px; height:200px;" canvas-id="canvasArcCir">
      </canvas>
      <view class="draw_btn">
        <view>80</view>
        <view>(满分100)</view>
      </view>
    </view>
  </view>

circle.js:

// pages/circle/circle.js
//获取应用实例
const app = getApp()
var ctx = wx.createCanvasContext('canvasArcCir');
Page({

  /**
   * 页面的初始数据
   */
  data: {

  },
  drawCircle: function() {
    function drawArc(s, e) {
      ctx.setFillStyle('white');
      ctx.clearRect(0, 0, 200, 200);
      ctx.draw();
      var x = 100,
        y = 100,
        radius = 96;
      ctx.setLineWidth(5);
      ctx.setStrokeStyle('#d81e06');
      ctx.setLineCap('round');
      ctx.beginPath();
      //圆心的 x,y坐标,radius半径  s:起始弧度,单位弧度(在3点钟方向) e:终止弧度,:false弧度的方向是否是逆时针
      ctx.arc(x, y, radius, s, e, false);
      ctx.stroke()
      ctx.draw()
    }
    var step = 70,
      startAngle = 1.5 * Math.PI,
      endAngle = 0,
      n = 100,
      endAngle = step * 2 * Math.PI / n + 1.5 * Math.PI;
    drawArc(startAngle, endAngle);

  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options) {
    //调用画圆的方法
    this.drawCircle()
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function() {
    //创建并返回绘图上下文context对象。
    var cxt_arc = wx.createCanvasContext('canvasCircle');
    cxt_arc.setLineWidth(6);
    cxt_arc.setStrokeStyle('#eaeaea');
    cxt_arc.setLineCap('round');
    cxt_arc.beginPath();
    cxt_arc.arc(100, 100, 96, 0, 2 * Math.PI, false);
    cxt_arc.stroke();
    cxt_arc.draw();
  },
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值