不知道你们有没有遇到过,公司要求在小程序中画仪表盘,刻度尺,还有环形进度,如下
项目是mpvue做的,修改bug过程中百度了方法, 有createCanvasContext的时候加一个this。 创建的ctx不能跟this挂钩,不能this.ctx这样。 在drawRuler()的时候加一个setTimeOut,延迟两秒 v-if来判断是否创建了这个canvas等等,都没有用。
后来以为是mpvue的坑,用了别人的原生刻度尺组件,发现也是有的,但是有时候会出现刻度画不完全,或者刻度重叠的问题,他的实现方式是先canvas画出来,然后导出成一个图片,再通过宽高来调整图片使他刚好适应你提供的容器宽高,这种方法固然好,但如果canvas画的太长,会出现绘制不完全或者绘制重叠那种情况,而且延迟绘制用户体验也很差。
再后来也是用了别人的css绘制的刻度尺组件,效果也很好,但我需要的是一个刻度值代表0.1的值,他实现的是一个刻度值代表1个值,他画的是刻度线,我画的是圆,所以也不太符合我的需求。
没得办法只能自己用css实现了,具体代码在git中,有用的话点个小星星呀 github.com/circlewang/…