• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >html5 > 如何使用html5 canvas实现心电图的移动效果

如何使用html5 canvas实现心电图的移动效果

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-03

本文主要包含前端,动画,canvas等相关知识,匿名希望在学习及工作中可以帮助到您
本篇文章给大家带来的内容是关于如何使用html5 canvas实现心电图的移动效果,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

效果图:

1278953092-5b923fa2a3fb1_articlex.gif

思路:

1、模拟点(如果你有真实的数据,那就是把数据幻化成canvas对应的坐标点)

模拟点时注意的点就是高起部分需要对称以及为了好看要随机出现上上下下

2、画线

画线需要注意有一个匀速移动的过程。

比如 A点到B点,不是简单的A画到B,而是A点到A1,A2....最后到B(这一块按照比例移动比较难)

3、画线的一些效果,比如加上阴影(这里就可以自由发挥了)

具体代码

<!DOCTYPE html>
 <html>
 <head>
     <meta charset="UTF-8">
     <title>心电图</title>
     <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
     <style>
         html,body{
             width: 100%;
             height: 100%;
             margin: 0;
         }
         canvas{
             background: #000;
             width: 100%;
            height: 100%;
         }
     </style>
 </head>
 <body>
 <div id="canvas">
     <canvas id="can"></canvas>
 </div>
 <script>
     var can = document.getElementById('can'),
         pan,
         index = 0,
         flag = true,
         wid = document.body.clientWidth,
         hei = document.body.clientHeight,
         x = 0,
         y = hei/2,
         drawX = 0, 
         drawY = hei/2,
         drawXY = [],
         cDrawX = 0,
         i = 0,
         reX = 0,
         reY = 0;
     start();
     function start(){
         can.height = hei;
         can.width  = wid;
         pan = can.getContext("2d");
         pan.strokeStyle = "white";
         pan.lineJoin = "round";
         pan.lineWidth = 6;
         pan.shadowColor = "#228DFF";
         pan.shadowOffsetX = 0;
         pan.shadowOffsetY = 0;
         pan.shadowBlur = 20;
         pan.beginPath();
         pan.moveTo(x,y);
         drawXYS();
         index = setInterval(move,1);
     };

     function drawXYS(){
         if(drawX > wid){
         }else{
             if(drawY == hei/2){
                 if(flag){
                     flag = false;
                 }else{
                     var _y = Math.ceil(Math.random()*10);
                     _y = _y/2;
                     if(Number.isInteger(_y)){
                         drawY += Math.random()*180+30;
                     }else{
                         drawY -= Math.random()*180+30;
                     }
                     flag = true;
                 }
                 cDrawX = Math.random()*40+15;
             }else{
                 drawY = hei/2;
             }
             drawX += cDrawX;
             drawXY.push({
                 x : drawX,
                 y : drawY
             });
             drawXYS();
         }
     }

     function move(){
         var x = drawXY[i].x,
             y = drawXY[i].y;
         if(reX >= x - 1){
             reX = x;
             reY = y;
             i++;
             cc();
             return;
         }
         if(y > hei/2){
             if(reY >= y){
                 reX = x;
                 reY = y;
                 i++;
                 cc();
                 return;
             }
         }else if(y < hei/2){
             if(reY <= y){
                 reX = x;
                 reY = y;
                 i++;
                 cc();
                 return;
             }
         }else{
             reX = x;
             reY = y;
             i++;
             cc();
             return;
         }

         reX += 1;
         if(y == hei/2){
             reY = hei/2;
         }else{
             var c = Math.abs((drawXY[i].x-drawXY[i-1].x)/(drawXY[i].y-drawXY[i-1].y));
             var _yt = (reX-drawXY[i-1].x)/c;

             if(drawXY[i].y < drawXY[i-1].y){
                 reY = drawXY[i-1].y - _yt;
             }else{
                 reY = drawXY[i-1].y + _yt;
             }
         }
         cc();
     }

    function cc(){
        if(i == drawXY.length){
             pan.closePath();
             clearInterval(index);
             index = 0;
             x = 0;
             y = hei/2;
             flag = true;
             i = 0;
         }else{
             pan.lineTo(reX, reY);
             pan.stroke();
         }
    }
 
</script>
</body>
</html>

相关推荐:

如何用HTML5的Canvas制作3D动画效果

HTML5 Canvas动画效果图文代码演示

以上就是如何使用html5 canvas实现心电图的移动效果的详细内容,更多请关注微课江湖其它相关文章!

您可能想查找下面的文章:

  • 详解前端HTML5几种存储方式的总结
  • 什么是前端和后端
  • HTML5和原生app如何进行交互?
  • 前端html5框架有哪些?html5常见六大框架
  • 如何使用html5 canvas实现心电图的移动效果
  • 实例分析:html5前端性能的测试(图文)
  • html5新增结构:html主体结构和非主体结构的介绍
  • 在react中使用svg的各种方法总结(附代码)
  • canvas实现九宫格心形拼图的方法(附代码)
  • canvas原生实现前端网页移动端签名

相关文章

  • 2018-12-03HTML5/CSS3专题 canvas 模拟实现电子彩票刮刮乐示例代码(图)
  • 2017-08-06用canvas实现图片滤镜效果附演示
  • 2018-12-03HTML5 canvas实现瀑布流文字效果代码
  • 2018-12-03在HTML5中使用MathML数学公式的简单讲解_html5教程技巧
  • 2018-12-03htm5新增的表单元素keygen标签的用法和属性介绍
  • 2018-12-03HTML5 标准将把互联网视频扔回到黑暗时代
  • 2018-12-03html5 canvas 使用示例 _html5教程技巧
  • 2018-12-03YouTube 宣布终止使用 Flash 作为默认设置,这是不是说明 Flash 真的要完了?
  • 2018-12-03关于存储详的文章推荐
  • 2018-12-03HTML5 canvas画布详解(四)

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • 有关H5中轮播图的制作方法
    • HTML5每日一练之Canvas标签的应用-绘制向日葵
    • 微信站前端开发注意点?
    • Html5 Canvas初探学习笔记(2) -绘制深入
    • HTML5实践- 使用css3丰富图片样式的示例代码
    • 使用HTML5 Canvas API中的clip()方法裁剪区域图像
    • 如何升级H5混合开发的app
    • HTML5 用动画的表现形式装载图像 _html5教程技巧
    • SVG基础|SVG TEXTPATH 元素
    • 相同码率下,Ogg、MPEG 4、WebM这三种视频格式,哪种清晰度更高,为什么?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有