国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

js canvas仿支付寶芝麻信用分儀表盤

2019-11-19 18:57:56
字體:
來源:轉載
供稿:網友

這是一個仿支付寶芝麻信用分的一個canvas,其實就是一個動畫儀表盤。

首先, 上原圖:

這個是在下支付寶上的截圖,分低各位見笑了。然后看下我用canvas實現(xiàn)的效果圖:

<canvas id="canvas" width="400" height="700" data-score='724'></canvas><!-- 設置data-score,分數(shù)區(qū)間[400, 900] -->

唉,總感覺不像。這個是GIF圖,可能在網頁上打開的效果會好一點(當然可能就是這樣)。大家可以點擊底部預覽codepen上的演示。有兩個不完美的地方,一個是實際上芝麻信用表盤上的的刻度是不均勻的,我這為了簡單的實現(xiàn)就采取相同的刻度;二是表盤上運動的點是有模糊的效果,還沒解決。唉,下次再說吧。

接下來還是來說說怎么實現(xiàn)的吧。第一步,國際慣例,創(chuàng)建畫布:

var canvas = document.getElementById('canvas'), ctx = canvas.getContext('2d'), cWidth = canvas.width, cHeight = canvas.height;

然后繪制表盤,雖說不是處女座,但也要盡可能做到跟原圖上的一樣,那就是這個環(huán)形開口的角度是多少呢?請上ps來測一下:

嗯,136°,這個角度確實刁鉆,為了方便接下來的計算,那就約等于140°。那么一個分數(shù)段的弧度就是:

var deg1 = Math.PI * 11 / 45
先把中間半透明的刻度層畫好:

ctx.save(); //中間刻度層ctx.beginPath();ctx.strokeStyle = 'rgba(255, 255, 255, .2)';ctx.lineWidth = 10;ctx.arc(0, 0, 135, 0, 11 * deg0, false);ctx.stroke();ctx.restore();

接著,畫6條刻度線,用for循環(huán)來實現(xiàn):

ctx.save(); // 刻度線for (var i = 0; i < 6; i++) { ctx.beginPath(); ctx.lineWidth = 2; ctx.strokeStyle = 'rgba(255, 255, 255, .3)'; ctx.moveTo(140, 0); ctx.lineTo(130, 0); ctx.stroke(); ctx.rotate(deg1);}ctx.restore();

同理,再把大刻度細分為5個小刻度:

ctx.save(); // 細分刻度線for (i = 0; i < 25; i++) { if (i % 5 !== 0){ ctx.beginPath(); ctx.lineWidth = 2; ctx.strokeStyle = 'rgba(255, 255, 255, .1)'; ctx.moveTo(140, 0); ctx.lineTo(133, 0); ctx.stroke(); } ctx.rotate(deg1 / 5);}ctx.restore();

刻度到這里就ok了,還需要給刻度標上文字和每個分數(shù)段的信用級別,具體的參見代碼,因為跟刻度實現(xiàn)的原理差不多,就不

主站蜘蛛池模板: 德清县| 东山县| 突泉县| 大庆市| 宝坻区| 垫江县| 阿勒泰市| 砚山县| 鄯善县| 广安市| 三都| 新郑市| 建阳市| 铅山县| 汾阳市| 盱眙县| 大足县| 宁陵县| 仲巴县| 深圳市| 鄂托克前旗| 虞城县| 贡觉县| 平凉市| 望江县| 石林| 英吉沙县| 清流县| 四会市| 武宣县| 昌邑市| 邹平县| 响水县| 威宁| 康定县| 长泰县| 射阳县| 谷城县| 宁明县| 罗源县| 陵水|