日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

JavaScript 繪制餅圖的示例

瀏覽:182日期:2023-10-03 18:02:48
繪制效果

JavaScript 繪制餅圖的示例

實現代碼JavaScript

var canvas = document.getElementById('mycanvas');var w = window.innerWidth;var h = window.innerHeight;canvas.height = 1000;canvas.width = 1400;var ctx = canvas.getContext(’2d’);var poppable = true;var slices = [];function shadeColor(color, percent) { var f = parseInt(color.slice(1), 16), t = percent < 0 ? 0 : 255, p = percent < 0 ? percent * -1 : percent, R = f >> 16, G = f >> 8 & 0x00FF, B = f & 0x0000FF; return '#' + (0x1000000 + (Math.round((t - R) * p) + R) * 0x10000 + (Math.round((t - G) * p) + G) * 0x100 + (Math.round((t - B) * p) + B)).toString(16).slice(1);}function pieSlice(oX, oY, r, pos, len, col,data) { this.data = data this.originX = oX; this.originY = oY; this.radius = r; this.startingRadian = pos; this.length = len; this.color = col; this.highlightedColor = shadeColor(this.color, .6); this.highlighted = false; this.popped = false; this.animationFrame = 0; function setColor(c) { this.color = c; }}pieSlice.prototype.displayData = function(){ ctx.fillStyle= this.color; ctx.fillRect(this.originX - this.radius - 40, this.originY-this.radius-35, 25,25); ctx.fillStyle= 'white'; ctx.font = '15px Arial'; ctx.fillText(this.data, this.originX - this.radius - 10, this.originY - this.radius - 18);}pieSlice.prototype.render = function() { if (!this.highlighted) { ctx.fillStyle = this.color; ctx.strokeStyle = this.color; } else { if(!this.popped && poppable){ this.displayData(); } // ctx.fillStyle = this.color; ctx.fillStyle = this.highlightedColor; ctx.strokeStyle = this.color; } ctx.beginPath(); var xOffset = Math.cos(this.length / 2 + this.startingRadian) * this.animationFrame; var yOffset = Math.sin(this.length / 2 + this.startingRadian) * this.animationFrame; ctx.moveTo(this.originX + xOffset, this.originY + yOffset); var x = this.originX + xOffset + this.radius * Math.cos(this.startingRadian); var y = this.originY + yOffset + this.radius * Math.sin(this.startingRadian); ctx.lineTo(x, y); ctx.arc(this.originX + xOffset, this.originY + yOffset, this.radius, this.startingRadian, this.startingRadian + this.length); if (this.popped) { var fill = ctx.fillStyle; this.displayData(); ctx.fillStyle = fill; if (this.animationFrame < 30) { this.animationFrame += 2; } } else { if (this.animationFrame > 0) { this.animationFrame -= 2; } } ctx.closePath(); //ctx.stroke(); //if (this.highlighted) { ctx.fill(); // }}pieSlice.prototype.update = function() {}function pieChart(s) { this.slices = s;}pieChart.prototype.render = function() { this.slices.forEach(function(p) { p.render(); });};pieChart.prototype.update = function() { this.slices.forEach(function(p) { p.update(); }); } //PIE ONEvar pie = new pieSlice(700, 170, 125, 0, Math.PI / 4, '#FFD1DC', 12);var slice2 = new pieSlice(700, 170, 125, Math.PI / 4, Math.PI / 4, '#08E8DE');var slice3 = new pieSlice(700, 170, 125, Math.PI / 2, Math.PI / 4, '#6699CC');var slice4 = new pieSlice(700, 170, 125, 3 * Math.PI / 4, Math.PI, '#ADD8E6');var slice5 = new pieSlice(700, 170, 125, 7 * Math.PI / 4, Math.PI / 4, '#B19CD9');var slices1 = [pie, slice2, slice3, slice4, slice5];var pink = new pieSlice(220, 170, 125, 0, Math.PI / 3, '#FF4B4B');var orange = new pieSlice(220, 170, 125, Math.PI / 3, Math.PI / 3, '#FF931B');var yellow = new pieSlice(220, 170, 125, 2 * Math.PI / 3, Math.PI / 3, '#FFE21B');var green = new pieSlice(220, 170, 125, 3 * Math.PI / 3, Math.PI / 3, '#90E64E');var blue = new pieSlice(220, 170, 125, 4 * Math.PI / 3, Math.PI / 3, '#6097D9');var purple = new pieSlice(220, 170, 125, 5 * Math.PI / 3, Math.PI / 3, '#8365DD');var redd = new pieSlice(1180, 170, 125, 0, 2 * Math.PI / 3, '#B3989B');var orangee = new pieSlice(1180, 170, 125, 2 * Math.PI / 3, 1 * Math.PI / 8, '#C1AEE0');var bluee = new pieSlice(1180, 170, 125, 19 * Math.PI / 24, 4 * Math.PI / 24, '#928CE9');var greenn = new pieSlice(1180, 170, 125, 23 * Math.PI/24, 3* Math.PI/8, '#676675');var purplee = new pieSlice(1180, 170, 125, 4 * Math.PI/3, 3* Math.PI/8, '#947D59');var ceci = new pieSlice(1180, 170, 125, 41 * Math.PI/24, 7*Math.PI/24, '#D994E0');var slices3 = [redd, orangee, bluee, greenn, purplee, ceci];var slices2 = [pink, orange, yellow, green, blue, purple];var pie1 = new pieChart(slices1);var pie2 = new pieChart(slices2);var pie3 = new pieChart(slices3);var update = function() { pie1.update();}var render = function() { ctx.clearRect(0, 0, canvas.width, canvas.height); pie1.render(); pie2.render(); pie3.render();}var step = function() { update(); render(); animate(step);}var animate = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function(callback) { window.setTimeout(callback, 1000 / 60); };slices.push.apply(slices, slices1);slices.push.apply(slices, slices2);slices.push.apply(slices, slices3);canvas.addEventListener('mousemove', function(e) { var x = e.clientX; var y = e.clientY; slices.forEach(function(slice) { ctx.beginPath(); var xOffset = Math.cos(slice.length / 2 + slice.startingRadian) * slice.animationFrame; var yOffset = Math.sin(slice.length / 2 + slice.startingRadian) * slice.animationFrame; ctx.moveTo(slice.originX + xOffset, slice.originY + yOffset); var xx = slice.originX + xOffset + slice.radius * Math.cos(slice.startingRadian); var yy = slice.originY + yOffset + slice.radius * Math.sin(slice.startingRadian); ctx.lineTo(xx, yy); ctx.arc(slice.originX + xOffset, slice.originY + yOffset, slice.radius, slice.startingRadian, slice.startingRadian + slice.length); if (ctx.isPointInPath(x, y)) { slice.highlighted = true; slice.displayData(); } else { slice.highlighted = false; } ctx.closePath(); });});canvas.addEventListener('click', function(e) { var x = e.clientX; var y = e.clientY; slices.forEach(function(slice) { ctx.beginPath(); var xOffset = Math.cos(slice.length / 2 + slice.startingRadian) * slice.animationFrame; var yOffset = Math.sin(slice.length / 2 + slice.startingRadian) * slice.animationFrame; ctx.moveTo(slice.originX + xOffset, slice.originY + yOffset); var xx = slice.originX + xOffset + slice.radius * Math.cos(slice.startingRadian); var yy = slice.originY + yOffset + slice.radius * Math.sin(slice.startingRadian); ctx.lineTo(xx, yy); ctx.arc(slice.originX + xOffset, slice.originY + yOffset, slice.radius, slice.startingRadian, slice.startingRadian + slice.length); if (ctx.isPointInPath(x, y)) { if (slice.popped) { slice.popped = false; poppable = true; } else { if(poppable){ slice.popped = true; poppable = false; } } slice.highlighted = false; } ctx.closePath(); });});//start the loopanimate(step);html

<canvas id='mycanvas'></canvas>

以上就是JavaScript 繪制餅圖的示例的詳細內容,更多關于JavaScript 繪制餅圖的資料請關注好吧啦網其它相關文章!

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久精品动漫| 丝瓜av网站精品一区二区| 欧美一区二区三区高清视频| 911精品国产| 精品国产麻豆| 亚洲免费福利一区| 香蕉久久夜色精品国产| 老司机免费视频一区二区| 亚洲区第一页| 黑丝一区二区三区| 婷婷成人综合| 亚洲天堂资源| 国产精品精品国产一区二区| 国产精品日本一区二区三区在线 | 国产精品欧美日韩一区| 亚洲理论在线| 欧美午夜不卡影院在线观看完整版免费| 精品国产亚洲一区二区三区大结局 | 精品精品99| 你懂的国产精品| 奇米色欧美一区二区三区| 亚洲一区二区三区四区电影 | 国产精品一区二区免费福利视频| 在线一区二区三区视频| 快播电影网址老女人久久| 91嫩草亚洲精品| 精品国产免费人成网站| 国精品产品一区| 福利精品一区| 精品欧美视频| 国产精品任我爽爆在线播放| 国产精品一区二区三区av| 国产激情综合| 中文字幕成在线观看| 亚洲91精品| 狠狠干成人综合网| 日韩精品视频网站| 日本中文字幕不卡| 国产精品久久久久久模特| 精品99在线| 国产精品蜜芽在线观看| 欧美精品资源| 在线看片一区| 欧美视频一区| 久久久久久婷| 国产精品日韩| 日韩中文字幕一区二区高清99| 日韩精品免费视频人成 | 午夜在线视频一区二区区别| 蜜臀av性久久久久蜜臀aⅴ流畅| 玖玖玖国产精品| 四虎在线精品| 日韩精品视频在线看| 久久国产日韩欧美精品| 精品国产中文字幕第一页| 久久久一二三| 美女网站久久| 久久精品99国产国产精| 国产一区二区亚洲| 欧美aa国产视频| 久久不射网站| 欧美日本精品| 日韩一区三区| 激情五月色综合国产精品| 一区二区三区四区在线观看国产日韩| 欧美有码在线| 日韩免费久久| 国产美女一区| 欧美日韩亚洲一区在线观看| 麻豆91在线播放| 九色porny丨国产首页在线| 免费精品国产的网站免费观看| 首页欧美精品中文字幕| 国产精品丝袜在线播放| 成人免费电影网址| 亚洲视频电影在线| 欧美xxxx中国| 亚洲一区二区三区无吗| 久久精品国产久精国产爱| 99久久婷婷| 亚洲精品在线a| 成人日韩av| 亚洲精品1区| 久久99精品久久久野外观看| 精品美女久久| 午夜久久美女| 欧美国产不卡| 另类激情亚洲| 国产在线观看91一区二区三区| 中文精品在线| 精品久久久亚洲| 91精品91| sm久久捆绑调教精品一区| 亚洲三级视频| 国产91在线精品| 国产日韩一区二区三免费高清| 99久久久久国产精品| 国产精品白丝av嫩草影院| 欧美日韩四区| 韩国女主播一区二区三区| 日本精品另类| 国产99久久久国产精品成人免费| 国产亚洲欧美日韩在线观看一区二区 | 亚洲aa在线| 久久青青视频| 欧美日韩中文| 99在线精品视频在线观看| a天堂资源在线| 欧美专区一区| 日韩国产一区| 日韩一区精品| 久久久久免费av| 欧美激情精品| 日韩精品视频在线看| 黄色日韩精品| 日韩av福利| 国产欧美久久一区二区三区| 免费成人av在线播放| 成人免费电影网址| 精品久久一区| 婷婷综合电影| 午夜在线观看免费一区| 新版的欧美在线视频| 国产探花一区| 一区二区三区网站| 国产在线欧美| 久草精品视频| 国产精品一区毛片| 亚洲精品看片| 久久亚洲精品中文字幕蜜潮电影| 日本欧美在线| 蜜桃av一区二区在线观看| 久久精品99久久无色码中文字幕| 国产一区二区三区四区五区传媒 | 国产一区二区三区精品在线观看| 亚洲深夜av| 亚洲激情国产| 亚洲一卡久久| 午夜免费一区| 欧美成人综合| 麻豆成人在线| 日本亚洲不卡| 国产精品亚洲一区二区在线观看| 久久精品 人人爱| 麻豆91精品视频| 国产在线不卡一区二区三区| 欧美成人基地 | 不卡在线一区| 日韩一区精品字幕| 久久狠狠久久| 精品视频97| 99久久亚洲精品蜜臀| 久久亚洲影院| 国产精品伦一区二区| 国产精品蜜芽在线观看| 亚洲一级影院| 日本亚洲视频| 老牛国内精品亚洲成av人片| 免费福利视频一区二区三区| www在线观看黄色| 日韩在线成人| 美女视频黄久久| 1000部精品久久久久久久久| 亚洲色图综合| 福利一区在线| 免费日韩av片| 精品资源在线| 亚洲成人av观看| 一区二区三区国产在线| 久久91视频| 国产亚洲欧洲| 喷白浆一区二区| 嫩草伊人久久精品少妇av杨幂| 99久久精品费精品国产| 另类激情亚洲| 久久精品人人| 99热免费精品| 久久精品国产福利| 亚洲一区中文| 乱一区二区av| 亚洲一区二区动漫| 久久久国产精品入口麻豆 | 久久99青青| 樱桃成人精品视频在线播放| 国产情侣一区| 久久影院一区| 国产精品亚洲人成在99www| 99国产精品免费视频观看| 视频在线在亚洲| 都市激情国产精品| 日韩精品一区二区三区中文| 欧美国产一级| 日韩二区在线观看| 欧美综合另类| 美女性感视频久久| 国产一区导航| 91中文字幕精品永久在线| 三级亚洲高清视频| 91免费精品| 久久国内精品自在自线400部|