Canvas学习

这篇博客介绍了HTML5 Canvas的基本图形绘制,包括画折线、实心长方形、实心圆、空心扇形和空心圆,并通过实例展示了如何创建动态柱状图。通过设置坐标、颜色和路径,实现不同形状的绘制,最后展示了如何利用这些基础知识来创建数据可视化的柱状图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

canvas 画布对象
1.画一条折线

<body>
	<canvas id="canvas" width="500" height="500">
		//canvas 默认大小300*150 可以指定画布大小
		//css里面设置style  width不能改变画布大小		  
	</canvas>	
	
	<script type="text/javascript">
		var cav = document.getElementById("canvas");
		var cxt = cav.getContext("2d");		//2D图像
		cxt.moveTo(10,10);		//起点
		cxt.lineTo(500,500);	//画到某点 
		cxt.lineTo(100,500);
		//线条颜色(画之前设置颜色才有效)
		cxt.strokeStyle="coral";
		cxt.stroke();			//开始画
	</script>
		
</body>

在这里插入图片描述
2.实心长方形

<body>

	<canvas id="canvas" width="500" height="500">
		//canvas 默认大小300*150 可以指定画布大小
		//css里面设置style  width不能改变画布大小		  
	</canvas>	
	
	<script type="text/javascript">
		var cav = document.getElementById("canvas");
		var cxt = cav.getContext("2d");			//2D图像
		//实心长方形
		cxt.fillStyle="cadetblue"
		cxt.fillRect(0,0,100,150);	//起点,大小
	</script>	
	
</body>

在这里插入图片描述

3.实心圆

<body>
	<canvas id="canvas" width="500" height="500">
		//canvas 默认大小300*150 可以指定画布大小
		//css里面设置style  width不能改变画布大小		  
	</canvas>	
	
	<script type="text/javascript">
		var cav = document.getElementById("canvas");
		var cxt = cav.getContext("2d");		//2D图像
		//实心圆
		cxt.beginPath();
		cxt.fillStyle="red"
		cxt.moveTo(100,100);		//起点
		//cxt.arc(x,y,r,起点弧度 ,终点弧度[角度]);
		cxt.arc(100,100,100,0,90*Math.PI/180);
		cxt.fill();
	</script>	
	
</body>

在这里插入图片描述

3.空心扇形

<body>
	<canvas id="canvas" width="500" height="500">
		//canvas 默认大小300*150 可以指定画布大小
		//css里面设置style  width不能改变画布大小		  
	</canvas>
		
	<script type="text/javascript">
		var cav = document.getElementById("canvas");
		var cxt = cav.getContext("2d");		//2D图像
		//空心扇形
		cxt.beginPath();		
		cxt.strokeStyle="red"
		cxt.moveTo(100,100);	//起点
		//cxt.arc(x,y,r,起点弧度 ,终点弧度[角度]);
		cxt.arc(100,100,100,0,90*Math.PI/180);
		cxt.closePath();	//闭合closePath
		cxt.stroke();		//画图
	</script>	
	
</body>

在这里插入图片描述

4.空心圆

<body>
	<canvas id="canvas" width="500" height="500">
		//canvas 默认大小300*150 可以指定画布大小
		//css里面设置style  width不能改变画布大小		  
	</canvas>	
	
	<script type="text/javascript">
		var cav = document.getElementById("canvas");
		var cxt = cav.getContext("2d");			//2D图像
		//空心圆
		cxt.beginPath();
		cxt.strokeStyle="red"
		//cxt.arc(x,y,r,起点弧度 ,终点弧度[角度]);
		cxt.arc(100,100,60,0,360*Math.PI/180);
		cxt.closePath();
		cxt.stroke();		//画图
	</script>
		
</body>

在这里插入图片描述

5.组合 空心圆+实心圆

<body>
	<canvas id="canvas" width="500" height="500">
		//canvas 默认大小300*150 可以指定画布大小
		//css里面设置style  width不能改变画布大小		  
	</canvas>
		
	<script type="text/javascript">
		var cav = document.getElementById("canvas");
		var cxt = cav.getContext("2d");		//2D图像
		 	 	
		cxt.beginPath();
		//实心圆
		cxt.arc(100,100,50,0,360*Math.PI/180);
		cxt.fillStyle="red"
		cxt.fill();
		cxt.strokeStyle="blue"
		cxt.lineWidth=5		//线宽
		cxt.stroke();		//画图
		cxt.closePath();
	</script>	
	
</body>

在这里插入图片描述
例子:动态柱状图

<body>
	<canvas id="canvas" width="650" height="600">
		//canvas 默认大小300*150 可以指定画布大小
		//css里面设置style  width不能改变画布大小
	</canvas>
	
	<script type="text/javascript">
		var cav = document.getElementById("canvas");
		var cvsCtx = cav.getContext("2d");		//2D图像
		
		var xItemName = ['周一', '周二', '周三', '周四', '周五', '周六', '周日'];
        var data = [80, 160, 185, 156, 266, 168, 106];
        //调用绘图
        var option = {
            xList : xItemName,
            data : data
        };
        createImage(option)
		
		//绘图方法
        function createImage(obj) {
            let xList = obj.xList;
            let data = obj.data;
            let itemSp = 80;    	//坐标间隔
            cvsCtx.moveTo(30, 10);		//y轴小箭头(实心)
            cvsCtx.lineTo(34, 6);
            cvsCtx.lineTo(38, 10);
            cvsCtx.moveTo(34, 6);		//y轴竖线
            cvsCtx.lineTo(34, 300); 
            cvsCtx.moveTo(6, 290);		//x轴横线
            cvsCtx.lineTo(600, 290);
            cvsCtx.moveTo(596, 286);	//x轴小箭头
            cvsCtx.lineTo(600, 290);
            cvsCtx.lineTo(596, 294);
            cvsCtx.fillStyle = "red";	//柱状图颜色

            let imageX = 60;   //柱图x轴坐标
            for (let i = 0; i < data.length; i++) {
                const element = data[i];
                //run(数值, x坐标, cvsCtx)
                run(element, imageX, cvsCtx);	//动态图
                imageX += itemSp;
            }
            // cvsCtx.fillRect(140, 290, 50, -120);
            // cvsCtx.fillRect(220, 290, 50, -120);
            // cvsCtx.fillRect(300, 290, 50, -140);
            // cvsCtx.fillRect(380, 290, 50, -130);
            // cvsCtx.fillRect(460, 290, 50, -160);
            // cvsCtx.fillRect(540, 290, 50, -180);
            //y轴文字
            cvsCtx.font = '16px normal 微软雅黑';
            cvsCtx.fillStyle = "#000";
            //cvsCtx.fillText('text', x, y);
            cvsCtx.fillText('y轴', 0, 16);
            
            //x轴文字
            let itemTextX = 70;	//文字x轴坐标
            for (let i = 0; i < xList.length; i++) {
                const element = xList[i];
                cvsCtx.fillText(element, itemTextX, 310);
                itemTextX += itemSp;
            }
            // cvsCtx.fillText('周一', 70, 310);
            // cvsCtx.fillText('周二', 150, 310);
            // cvsCtx.fillText('周三', 230, 310);
            // cvsCtx.fillText('周四', 310, 310);
            // cvsCtx.fillText('周五', 390, 310);
            // cvsCtx.fillText('周六', 470, 310);
            // cvsCtx.fillText('周日', 550, 310);

            //每一个柱状图上的数字
            let imageTextX = 70;
            for (let i = 0; i < data.length; i++) {
                const element = data[i];
                cvsCtx.fillText(element, imageTextX, 300 - element - 20);
                imageTextX += itemSp;
            }
            // cvsCtx.fillText('170', 70, 300 - 190);
            // cvsCtx.fillText('120', 150, 300 - 140);
            // cvsCtx.fillText('120', 230, 300 - 140);
            // cvsCtx.fillText('140', 310, 300 - 160);
            // cvsCtx.fillText('130', 390, 300 - 150);
            // cvsCtx.fillText('160', 470, 300 - 180);
            // cvsCtx.fillText('180', 550, 300 - 200);
            cvsCtx.stroke();
        }
        
        //动态效果
        function run(element, imageX, cvsCtx) {
            let x = 0;
            var time = setInterval(() => {
                if (x > -element) {
                    cvsCtx.fillStyle = "red";
                    cvsCtx.clearRect(imageX, 290, 50, -element);
                    cvsCtx.fillRect(imageX, 290, 50, x);
                    x -= 3;
                } else {
                    clearInterval(time);		//关闭函数
                }
            }, 4);
        }
	</script>
	
</body>

在这里插入图片描述

内容概要:本文档详细介绍了在三台CentOS 7服务器(IP地址分别为192.168.0.157、192.168.0.158和192.168.0.159)上安装和配置Hadoop、Flink及其他大数据组件(如Hive、MySQL、Sqoop、Kafka、Zookeeper、HBase、Spark、Scala)的具体步骤。首先,文档说明了环境准备,包括配置主机名映射、SSH免密登录、JDK安装等。接着,详细描述了Hadoop集群的安装配置,包括SSH免密登录、JDK配置、Hadoop环境变量设置、HDFS和YARN配置文件修改、集群启动与测试。随后,依次介绍了MySQL、Hive、Sqoop、Kafka、Zookeeper、HBase、Spark、Scala和Flink的安装配置过程,包括解压、环境变量配置、配置文件修改、服务启动等关键步骤。最后,文档提供了每个组件的基本测试方法,确保安装成功。 适合人群:具备一定Linux基础和大数据组件基础知识的运维人员、大数据开发工程师以及系统管理员。 使用场景及目标:①为大数据平台搭建提供详细的安装指南,确保各组件能够顺利安装和配置;②帮助技术人员快速掌握Hadoop、Flink等大数据组件的安装与配置,提升工作效率;③适用于企业级大数据平台的搭建与维护,确保集群稳定运行。 其他说明:本文档不仅提供了详细的安装步骤,还涵盖了常见的配置项解释和故障排查建议。建议读者在安装过程中仔细阅读每一步骤,并根据实际情况调整配置参数。此外,文档中的命令和配置文件路径均为示例,实际操作时需根据具体环境进行适当修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值