这篇文章主要介绍了Html5饼图绘制实现统计图的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
Html5提供了强大的绘图API,让我们能够使用javascript轻松绘制各种图形。本文将主要讲解使用HTML5绘制饼图(统计图)的方法。先看一下饼图效果:
这个图是动态生成的,根据传入的比例参数(数组),来动态绘制饼图。饼图的大小也是根据高度来动态调整的。
全部代码如下:
这个函数可以直接使用,如果想做的更漂亮,可以增加一些额外的美观绘制。
本代码最大的灵活性是将绘制参数与绘制代码分离,饼图大小根据Canvas容器高度自动调整。传递参数方式如下:
<!DOCTYPE html>
<html>
 <head>
 <meta charset="utf-8">
 <title>帧动画</title>
 </head>
 <body>
 <canvas id="canvas" width="400" height="300"></canvas>
 <div class="">
 <button class="start-btn" type="button">重新吃</button>
 <button class="end-btn" type="button">不吃了</button>
 <button class="pause-btn" type="button">歇一歇</button>
 <button class="continue-btn" type="button">继续吃</button>
 </div>
 <script type="text/javascript">
 const canvas = document.getElementById("canvas")
 canvas.style.border = "1px solid black"
 const ctx = canvas.getContext("2d")
const img = new Image() // 创建图片对象
 let timer // 定时器标识符
 let millisec = 300 // 执行时间间隔
 let colIndex = 0 // 列数
 let rowIndex = 0 // 行数
 const timerFun = () => { // 声明定时器执行函数
 console.log("设置定时器");
 ctx.clearRect(0, 0, canvas.style.width, canvas.style.height) // 清除画布
if (rowIndex < 3) { // 如果是前5帧
 ctx.drawImage(img, colIndex * 240, rowIndex * 240, 200, 200, 50, 50, 200, 200) // 图片对象,x坐标,y坐标(注:图片上定位的坐标),width,height(图片上截取的大小),x坐标,y坐标(注:图片在画布上的起点,即左上角),width,height(缩放,不是裁剪)
 colIndex++ // 下一帧
if (colIndex > 4) {
 colIndex = 0
 rowIndex++
 }
 } else {
 colIndex = 0
 rowIndex = 0
 }
 }
img.onload = () => {
 timer = setInterval(timerFun, millisec)
 }
 img.src = "image/apple.jpg"
const startBtn = document.getElementsByClassName('start-btn')[0]
 const endBtn = document.getElementsByClassName('end-btn')[0]
 const pauseBtn = document.getElementsByClassName('pause-btn')[0]
 const continueBtn = document.getElementsByClassName('continue-btn')[0]
startBtn.addEventListener('click', () => {
 console.log("点击开始", timer)
 clearInterval(timer)
 colIndex = 0 // 列数
 rowIndex = 0 // 行数
 timer = setInterval(timerFun, millisec)
 })
 endBtn.addEventListener('click', () => {
 console.log("点击结束", timer)
 clearInterval(timer)
 colIndex = 0
 rowIndex = 0
 ctx.drawImage(img, colIndex * 240, rowIndex * 240, 200, 200, 50, 50, 200, 200)
 timer = 0
 })
 pauseBtn.addEventListener('click', () => {
 console.log("点击暂停", timer)
 clearInterval(timer)
 timer = 0
 })
 continueBtn.addEventListener('click', () => {
 if (timer) {
 alert('吃着呢,别催')
 return
 }
 console.log("点击继续", timer)
 timer = setInterval(timerFun, millisec)
 })
 </script>
 </body>
</html>
到此这篇关于Html5饼图绘制实现统计图的方法的文章就介绍到这了,更多相关Html5饼图统计图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!