html4分之4圆环,vue动态绘制四分之三圆环图效果

参照网上的一个案例“参照的为绘制的是一个动态的圆环”,现在我的需求是改编成四分之三的圆环

实现效果:

样式展示 canvas绘图基本操作设置就可以

参考源代码链接:原文:https://www.ddpool.cn/html5/682215.html

> 引用的上文源代码进行修改,注意几点

1. 理解绘制圆环的原理,是根据弧度进行绘制

2. 弧度的计算公式

3. 每一角度转换成弧度

4. 起点和终点的坐标

> 自己画个图,方便理解!

首先根据图可以看到起点和重点,看坐标知道起点是-240度,这个正负还是要区分的,每一弧度的计算公式

将角度转换为弧度:

var radians = degrees * (Math.PI/180);

这样就可以进行改版了

改版之后的代码

`drawMain(drawing_elem, percent, forecolor, bgcolor,fillColor) {

/*

@drawing_elem: 绘制对象

@percent:绘制圆环百分比, 范围[0, 100]

@forecolor: 绘制圆环的前景色,颜色代码

@bgcolor: 绘制圆环的背景色,颜色代码

*/

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.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动态绘制四分之三圆环图效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢! ad51e517755f8fd6a7ec83ced4ecfaf3.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值