canvas画波形图

2023-05-16

最近公司要在浏览器上加个波形图,本人搞C++的,不会html5,在网上搜了半天没找到一个例子,只好自己研究了。。郁闷啊

画这个图主要用到html5的canvas,不多说,直接搞代码上来,注释已写好,自己看

<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>Document</title>
  <style>
	canvas{
		background:#eee;
	}
  </style>
  <script>

	var x = 0; // canvas画布原点x
	var y = 0; // canvas画布原点y
	var x_base = x; // 我们要画的波形图的最后一个点的x坐标
	var y_base = 250; // 我们要画的波形图的最后一个点的y坐标
	var arrPoint = []; // 用于保存已经波形图的轨迹点
	var index = 0; // 这个我是用来打日志用的..下面为了看清除了多少次canvas画布
	var step = 10; // x轴每次走的步长
	var width=500; // 这个是画布宽度
	var height=500; // 这个是画图高度
	(function (){
		// 首先让我们的函数周期调用
		var itv = setInterval(function(){
			// 获取canvas对象和context,并进行一系列初始化
			var canvas = document.getElementById("canvas");
			var context = canvas.getContext("2d");
			context.strokeStyle = "rgb(255,0,0)";
			context.fileStyle = "rgb(255,0,0)";

			// 画图之前首先清理一下我们的画布,四个参数.
			// 1.坐标原点x
			// 2.坐标原点y
			// 3.要清理的宽度(这里宽度用的x_base是因为canvas画布的原点不断向左移动,变相的等于画布不断变宽
			//   之所以减一个step是需要看下文,因为在下文中,x_base每一次都会增加一个step,而我们在清理画布的时候,
			//   我们的画布原点还没有被移动,相当于我们在清除画布时,我们的画布宽度还没有增加,所以要减一个step,当然不减也可以,没事儿)
			// 4.画布高度
			context.clearRect(0,0,x_base-step,height);
			if(x_base > width){
				console.log("clear" + index);
				index++;
				// 画布原点x轴向左移动一个step的位置
				context.translate(step*-1,0);
			}
			
			// 向数组中添加数据,将我们每一次目标到达的终点坐标添加到数组中.这里我设置的条件是,保证数组大小不会超过我的画布宽度除以step个
			// 目的是针对画布定的,就是每一次我只画画布这么大小的图
			var obj = {};
			obj.x = x_base;
			obj.y = y_base;
			if(arrPoint.length>(width/step)){
				arrPoint.splice(0,1);
				console.log(arrPoint);
			}
			arrPoint.push(obj);
			
			// 开始画了,在画之前先将所有的图形都画出来
			context.beginPath();
			for(var i = 0; i < arrPoint.length; i++){
				context.lineTo(arrPoint[i].x,arrPoint[i].y);

			}
			// 再一次性将所有图形呈现在html上
			context.stroke();
			context.closePath();

			// OK,这时候已经花完了,现在要算一算我们的下一个目标点的坐标了,算完了以后,保存在一个全局变量中
			// 等待下次再执行画图函数时,将变量添加到数组中,让canvas画图使用
			x_base += step;
			y_base = 250 + Math.random()*20;
		},100)
	})()

  </script>
 </head>
 <body>
	<canvas id="canvas" width="500" height="500">
		你这不行啊..不支持canvas
	</canvas>
 </body>
</html>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

canvas画波形图 的相关文章

  • json去掉指定字段

    lt dependency gt lt groupId gt org json lt groupId gt lt artifactId gt json lt artifactId gt lt version gt 20160810 lt v
  • mac 安装 man中文文档

    配置环境 brew install autotoolsbrew install python3brew install openccbrew install automake 下载源码 https github com man pages
  • 【NLP最佳实践】Huggingface Transformers实战教程

    内容简介 x1f917 手把手带你学 xff1a 快速入门Huggingface Transformers 和鲸链接 xff1a https www heywhale com home activity detail 61dd2a3dc23
  • visual studio配置clang开发环境

    一 安装环境 1 下载visual studio 2 选择工作负载 xff0c 使用c 43 43 的桌面开发 3 选择单个组件 xff0c 搜索clang xff0c 勾选两个组件 4 点击安装 等待安装完成 二 测试环境 xff1a 在
  • DeepSpeed-Chat:最强ChatGPT训练框架,一键完成RLHF训练!

    https github com microsoft DeepSpeedExamples tree master applications DeepSpeed Chat 一个快速 负担得起 可扩展和开放的系统框架 xff0c 用于实现端到端
  • BigCode开放性能超越Copilot的代码生成模型Starcoder

    BigCode释出高效能程式码生成模型StarCoderBase xff0c 与为Python调校的StarCoder xff0c 效能超越GitHub Copilot初期版本所用的OpenAI code cushman 001模型 xff
  • 【LLM系列之FLAN-T5/PaLM】Scaling Instruction-Finetuned Language Models

    论文题目 xff1a Scaling Instruction Finetuned Language Models 论文链接 xff1a https arxiv org pdf 2210 11416 pdf github链接 xff1a ht
  • LlamaIndex :面向QA 系统的全新文档摘要索引

    在这篇博文中 xff0c 我们介绍了一种全新的 LlamaIndex 数据结构 xff1a 文档摘要索引 我们描述了与传统语义搜索相比 xff0c 它如何帮助提供更好的检索性能 xff0c 并通过一个示例进行了介绍 背景 大型语言模型 LL
  • html中各种hr样式

    第一种 lt hr style 61 34 height 2px border none border top 2px dotted 185598 34 gt height 2px 是hr的高度 border none 是没有边框 bord
  • Python爬虫系列(五)360图库美女图片下载

    这几天终于忙完毕设和学校的事情 xff0c 终于有时间来写Python了 xff08 xffe3 xffe3 xff09 前些天在群里看到有人讨论这个360美女图库 的爬取 自己今天也尝试下 xff08 蛮简单 xff09 因为这个网站是下
  • Python 过滤字母和数字

    实例1 crazystring 61 39 dade142 0142f ad 39 只保留数字 new crazy 61 filter str isdigit crazystring print 39 39 join list new cr
  • Python人工智能之图片识别,Python3一行代码实现图片文字识别

    自学Python3第5天 xff0c 今天突发奇想 xff0c 想用Python识别图片里的文字 没想到Python实现图片文字识别这么简单 xff0c 只需要一行代码就能搞定 作者微信 xff1a 2501902696 from PIL
  • Contrastive Loss(对比损失)

    Contrastive Loss 在传统的siamese network中一般使用Contrastive Loss作为损失函数 xff0c 这种损失函数可以有效的处理孪生神经网络中的paired data的关系 siamese networ
  • maven详细配置

    Maven 本质 xff1a 项目管理工具 可以做到整体编译 测试 xff0c 快速打包部署 作用 xff1a 项目构建 xff0c 提供标准的构建方式依赖管理 xff0c 避免版本冲突 生命周期 xff1a mvn clean 清理编译项
  • clang ast基本命令的使用

    1 生成二进制文件 clang emit ast input cpp 需要二进制文件相应的查看器才可以读 xff0c txt打开乱码了 2 直接在控制台打印输出 clang Xclang ast dump fsyntax only inpu
  • unreferenced local variable

    有时候编译程序的时候会发现下面的错误 warning C4101 39 n 39 unreferenced local variable 其实就是程序里面定义了变量但是没有使用 xff0c 才会有这样的警告 解决方法就是像下面这样定义 in
  • 来自一位女程序员8年的总结。

    8年了 xff0c 从来没有像今天说总结这一下 我认为这是我的一个进步吧 8年 xff0c 包括上北大青鸟培训的2年 xff0c 然后6年的工作 xff0c 换了很多家公司 有个人原因也有公司原因 先说一下培训的那2年 xff0c 我们学习
  • Nginx配置重定向和反向代理(转发)

    重定向 地址重定向 xff1a 是指当使用者浏览某个网址时 xff0c 将他导向到另一个网址的技术 常用在把一串很长的网址 xff0c 转成较短的网址 因为当要传播某网站时 xff0c 常常因为网址太长 xff0c 不好记忆 xff1b 又
  • intelliJ idea创建分层的项目结构

    原文地址 xff1a http www yanwushu com post 35 html 本文使用intelliJidea 14 在idea中创建一个分层 xff08 视图层 业务逻辑层 数据访问层 xff09 的项目步骤如下 xff1a
  • 新电脑将软件安装到D盘的操作说明

    新电脑将软件安装到D盘的操作说明 每次安装软件 xff0c 都会默认安装到C盘 xff0c C盘满了 xff0c 电脑就会变卡 xff0c 我们应该避免这种情况 一 下载软件前要做的事 我们应该避免使用软件管家等工具 xff0c 因为它们的

随机推荐