本意是打算写一个类似f2的半圆进度条,但是感觉小程序中引入太难调了,所以就自己用canvas随便画了一个实现了类似的效果。

最终效果图

wxml
    <view class="top-box"><canvas class="canvas-box" canvas-id='canvas'></canvas><view class="nx" style="left:{{(app.globalData.windowWidth)/2 - 50}}px;top: 140px;">{{nx}}%</view></view>
js
  onReady: function () { this.initCanvas()},initCanvas() {let windowsWidth = app.globalData.windowWidthlet offset =  0.1  // 偏移let r = 140  // 半径const ctx = wx.createCanvasContext('canvas')ctx.arc(windowsWidth / 2, 175, r, Math.PI * 1 - offset, computedC(1))ctx.setStrokeStyle('#F8F9FC')ctx.setLineCap('round')ctx.setLineWidth(10)ctx.stroke()ctx.draw(true)let x = 0let ex = util.dayForMonth(new Date())let timer = setInterval(()=>{const ctxs = wx.createCanvasContext('canvas')  if(x >= ex){clearInterval(timer)}this.setData({nx:(x * 100).toFixed(1)})ctxs.arc(windowsWidth / 2, 175, r, Math.PI * 1 - offset, computedC(x))ctxs.setLineWidth(10)ctxs.setLineCap('round')ctxs.setStrokeStyle('#07C160')ctxs.stroke()ctxs.draw(true)x += 0.001},5)const ctxfont = wx.createCanvasContext('canvas')ctxfont.setFontSize(20)ctxfont.setFillStyle('#fff')ctxfont.setTextAlign('center')ctxfont.setTextBaseline('middle')ctxfont.fillText(`本月进度`, windowsWidth / 2, 110)ctxfont.draw(true)function computedC(num) {return Math.PI * (num + 1) + offset}},
utils.js
const dayForMonth = date => {function $in(array, value) {return array.indexOf(value) !== -1}const year = date.getFullYear()const month = date.getMonth() + 1const day = date.getDate()const thx = [1, 3, 5, 7, 8, 10, 12]const twx = [4, 6, 9, 11]if ($in(thx, month)) {return (day/31).toFixed(4)}else if ($in(twx, month)) {return (day/30).toFixed(4)}else{if(year%4 === 0){return (day/29).toFixed(4)}else{return (day/28).toFixed(4)}}
}
wxss
.top-box{display: flex;margin: 0 auto;border-radius: 1%;color: #fff;width: 100vw;height: 220px;background-image: linear-gradient(#FF8B00, #FFCE00);
}.canvas-box{display: flex;margin: 0 auto;width: 100%;height: 220px;
}.nx{position: absolute;width: 100px;text-align: center;color: #fff;font-size: 40px;font-family: bold;
}

在小程序中用canvas画一个仪表盘相关推荐

  1. 关于星空的java小程序_[Java教程]小程序使用Canvas画饼图_星空网

    小程序使用Canvas画饼图 2018-10-24 0 先上效果图 -------------------------------------------------------------w --- ...

  2. 微信小程序图片转换成文字_微信小程序中用canvas将文字转成图片,文字自动换行...

    onReady: function () { wx.showLoading({ title: '生成图片中...', }) var that = this const ctx = wx.createC ...

  3. 微信小程序利用canvas画出根据文字自适应的边框

    1.需求 生成海需要画出一个中空带边框的的tag,如下图.众所周知,微信小程序里的canvas画图都是需要自己一点点画出来,不想html有htmlToCanvas,直接写HTML就可以转成canvas ...

  4. 微信小程序使用canvas画海报分享图

    项目场景: 很多小程序都会有一些分享海报的需求.因为我这边之前一直都是后端直接生成一张图片然后返回了的,我前端直接把路径放上去就可以了.但是,有时候后端没直接生成海报,而是只生成了一个二维码,这时候就 ...

  5. 微信小程序使用canvas画不规则图形

    一.根据UI在海报中画不同的图片形状的路径,这中用css很简单,用canvas画的话就要了解canvas中的几个方法, 效果图: 代码如下: Page({canvasIdErrorCallback(e ...

  6. 微信小程序 使用canvas画圆形倒计时动画

    参考文档:https://www.cnblogs.com/quietxin/p/9418813.html 效果: wxml页面 <view class="container" ...

  7. 微信小程序利用canvas绘制一个动画百分比圆圈

    效果图(动态的圆圈) <template> <view class='circleBar'><view class="wrap"><vie ...

  8. 微信小程序利用canvas绘制一个静态百分比圆圈

    效果如图 <view class='circleBar'><view class="wrap"><canvas class="cir&quo ...

  9. 新H5中用canvas画一个数字钟表

    此文章是参考以往大牛代码,在大牛代码基础上加以更改而成. 本人暂时还是一名技术菜鸟,刚刚踏上web前端这条路才五个月,希望大牛们多多提携... 效果图如下: 话不多说,上代码: <body st ...

最新文章

  1. 550种Blender风格化笔刷素材
  2. Linux命令之whereis
  3. day13 Python数据基本类型
  4. Mina2中IoService
  5. TOP命令及参数解析
  6. paypal标准支付流程图
  7. bmp批量转换jpg的方法
  8. 百度服务获取坐标放置在天地图上实例
  9. 汇率兑换 python第一课_【Python 07】汇率兑换1.0-2(基本元素)
  10. github出现HTTP request failed
  11. 若a,b互素,则a必然存在模b的逆元;若a,b不互素,则a必然不存在模b的逆元
  12. C# - 音乐小闹钟_BetaV1.0
  13. WMI系列--关于WMI
  14. IE无法上网,360浏览器部分网站无法打开
  15. restfulApi相关
  16. 下列HTML标签是段落标签的是,HTML段落标签
  17. 黑莓未死 出路在于保节操做精品/从贩卖祖屋到股价大涨黑莓回光返照?
  18. PageHelper详解
  19. Wondershare Filmora视频叠加教程-轻松制作画中画效果
  20. leetcode系列-63.不同路径 II

热门文章

  1. c++与c语言的struct和type struct区别
  2. 工行的银行卡号代表开户行的数字是哪几位?怎么查询
  3. [kuangbin]专题九 连通图 题解+总结
  4. APB协议UVM验证环境的搭建
  5. 用html做祝福语朋友,有关于朋友之间的祝福语
  6. 《程序员的自我修养--链接、装载与库》学习笔记(一)
  7. 耕升 GeForce RTX 4070 星极皓月 OC给玩家带来DLSS3+2K光追百帧游戏体验
  8. RTX DLSS
  9. 逻辑回归分类Iris数据集
  10. 简单制作任务栏透明背景圆形图标