时间:2021-05-26
参照网上的一个案例“参照的为绘制的是一个动态的圆环”,现在我的需求是改编成四分之三的圆环
实现效果:
样式展示 canvas绘图基本操作设置就可以
参考源代码链接:原文:https://www.jb51.net/html5/682215.html
> 引用的上文源代码进行修改,注意几点
1. 理解绘制圆环的原理,是根据弧度进行绘制
2. 弧度的计算公式
3. 每一角度转换成弧度
4. 起点和终点的坐标
> 自己画个图,方便理解!
首先根据图可以看到起点和重点,看坐标知道起点是-240度,这个正负还是要区分的,每一弧度的计算公式
将角度转换为弧度:
var radians = degrees * (Math.PI/180);
这样就可以进行改版了
改版之后的代码
`drawMain(drawing_elem, percent, forecolor, bgcolor,fillColor) {var context = drawing_elem.getContext('2d')var center_x = drawing_elem.width / 2;var center_y = drawing_elem.height / 2;var rad = Math.PI/3*5/100; //绘制的为300度的圆// 65 * Math.PI / 180, 115 * Math.PI / 180// var speed = 0;// 绘制背景圆圈function backgroundCircle(){context.save();context.beginPath();context.lineWidth = 8; //设置线宽var radius = center_x - context.lineWidth;context.lineCap = "round";context.strokeStyle = bgcolor;context.arc(center_x, center_y, radius,-Math.PI/180*240, Math.PI/180*60, false);**起点,终点,半径,开始点,结束点,是否顺/逆时针**context.stroke();context.closePath();context.restore();}//绘制运动圆环function foregroundCircle(n){context.save();context.strokeStyle = forecolor;context.lineWidth = 8;context.lineCap = "round";var radius = center_x - context.lineWidth;// console.log(endAngle)context.beginPath();context.arc(center_x, center_y, radius ,-Math.PI/180*240 ,-Math.PI/180*240+n*rad , false); //用于绘制圆弧context.arc(x坐标,y坐标,半径,起始角度,终止角度,顺时针/逆时针)context.stroke();context.closePath();context.restore();}//绘制文字function text(n){context.save(); //save和restore可以保证样式属性只运用于该段canvas元素context.fillStyle = fillColor;var font_size = 20;context.font = font_size + "px Helvetica";var text_width = context.measureText(n.toFixed(0)+"%").width;context.fillText(n.toFixed(0)+"%", center_x-text_width/2, center_y + font_size/2);context.restore();}//执行动画(function drawFrame(){// 去掉动画加载效果// window.requestAnimationFrame(drawFrame);// context.clearRect(0, 0, drawing_elem.width, drawing_elem.height);backgroundCircle();text(percent);foregroundCircle(percent);**// 去掉动画加载效果,这两行代码,由于网速加载慢的时候绘制的比较慢,动态效果绘制的太缓慢,所以去掉了**// if(speed >= percent) return;// speed += 1;}());},接下来就是调用该方法了,调用的时候放到了nextTick中,当时遇到的问题就是加载只能加载第一个,下面的加载不出来,自我感觉加载顺序的问题,绘制了但是没渲染出来
this.$nextTick(()=>{for(var i =0;i<this.couponCenterLists.length;i++) {this.childrenTag = document.getElementById("time-graph-canvas"+i);let score = this.couponCenterLists[i].couponPercentage * 100;this.drawMain(this.childrenTag, score, "#fff", "rgba(255,255,255,0.4)","#fff");**score变量是我从接口取出来的数据存到了score变量中**}})总结
以上所述是小编给大家介绍的vue动态绘制四分之三圆环图效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
四分之三打出来的方法如下: 1、通过桌面快捷方式或搜索来打开word文档。 2、在随后打开的界面左侧点击需要输入四分之三的word文档。 3、在word界
本文实例为大家分享了p5.js临摹动态图片的具体代码,供大家参考,具体内容如下1、临摹图片2、图像运动规律原图中一共有36个等大的四分之三圆形,按照一定的规律转
对于消费者来说,富有吸引力的可能不只是产品详情页上显示的精修图,而是产品评价中真实的买家晒图。Bazaarvoice的最新调查显示,将近四分之三(74%)的消费
根据2015年12月的调查显示,在美国,有超过四分之三的网络用户订阅了付费电商。尽管如此,仍有许多用户表示付费电视价格太贵。TVfreedom和TheHarri
我们做中文网站,我们百分之98是依靠搜索引擎带来用户和流量,其中四分之三或者更高的比例来自中文第一搜索引擎——百度;另外很小的一部分就是谷歌,雅虎,必应等。