canvas绘制网格线示例

在这里插入图片描述

查看专栏目录

canvas示例教程100+专栏,提供canvas的基础知识,高级动画,相关应用扩展等信息。canvas作为html的一部分,是图像图标地图可视化的一个重要的基础,学好了canvas,在其他的一些应用上将会起到非常重要的帮助。

文章目录

    • 示例效果图
    • 示例源代码(共109行)
    • canvas基本属性
    • canvas基础方法

如何使用canvas绘制网格线呢?方法其实很简单,就是绘制一些等距间隔的横线和竖线,形成一个网格。通常在地图的绘制当中会用到,下面是大剑师的一个示例,供参考:

示例效果图

在这里插入图片描述

示例源代码(共109行)


/*
* @Author: 大剑师兰特(xiaozhuanlan),还是大剑师兰特(CSDN)
* @此源代码版权归大剑师兰特所有,可供学习或商业项目中借鉴,未经授权,不得重复地发表到博客、论坛,问答,git等公共空间或网站中。
* @Email: 2909222303@qq.com
* @weixin: gis-dajianshi
* @First published in CSDN
* @First published time: 2024-01-02
*/
<template>
	<div class="djs_container">
		<div class="top">
			<h3>canvas绘制网格线</h3>
			<div>大剑师兰特, 还是大剑师兰特,gis-dajianshi</div>
			<h4>
				<el-button type="primary" size="mini" @click="draw()">绘制</el-button>
			</h4>
		</div>
		<div class="dajianshi ">
			<canvas id="dajianshi" ref="mycanvas" width="980" height="490"></canvas>
		</div>

	</div>
</template>
<script>
	export default {
		data() {
			return {
				ctx: null,
				canvas: null,
			}
		},
		mounted() {
			this.setCanvas()
		},
		methods: {
			setCanvas() {
				this.canvas = document.getElementById('dajianshi');
				if (!this.canvas.getContext) return;
				this.ctx = this.canvas.getContext("2d");
			},
			draw() {
				this.drawGrid(this.ctx, 0, 0, 50, 980, 490, 50, "orange");
			},

			// 参数说明:
			// ctx:画布
			// x1:起始x位置
			// y1:起始y位置
			// step1:横向间隔
			// x2:终止x位置
			// y2:终止y位置
			// step1:竖向间隔
			// color:颜色值						

			drawGrid(ctx, x1, y1, step1, x2, y2, step2, color) {
				ctx.save();
				ctx.lineWidth = 0.5;
				ctx.strokeStyle = color;
				ctx.fillStyle = color;

				let x, y;
				// 画竖线
				for (x = x1; x < x2; x += step1) {
					ctx.beginPath();
					ctx.moveTo(x, y1);
					ctx.lineTo(x, y2);
					ctx.stroke();
					ctx.closePath();
				}
				// 画横线
				for(y=y1;y<y2;y+=step2){
				    ctx.beginPath();
				    ctx.moveTo(x1, y);
				    ctx.lineTo(x2, y);
				    ctx.stroke();
				    ctx.closePath();
				}				
				ctx.restore();

			}

		}
	}
</script>

<style scoped>
	.djs_container {
		width: 1000px;
		height: 680px;
		margin: 50px auto;
		border: 1px solid green;
		position: relative;
	}

	.top {
		margin: 0 auto 0px;
		padding: 10px 0;
		background: #333;
		color: #fff;
	}

	.dajianshi {
		margin: 5px auto 0;
		border: 1px solid #ccc;
		width: 980px;
		height: 490px;
		background-color: #f9f9f9;
	}
</style>


canvas基本属性

属性属性属性
canvasfillStylefilter
fontglobalAlphaglobalCompositeOperation
heightlineCaplineDashOffset
lineJoinlineWidthmiterLimit
shadowBlurshadowColorshadowOffsetX
shadowOffsetYstrokeStyletextAlign
textBaselinewidth

canvas基础方法

方法方法方法
arc()arcTo()addColorStop()
beginPath()bezierCurveTo()clearRect()
clip()close()closePath()
createImageData()createLinearGradient()createPattern()
createRadialGradient()drawFocusIfNeeded()drawImage()
ellipse()fill()fillRect()
fillText()getImageData()getLineDash()
isPointInPath()isPointInStroke()lineTo()
measureText()moveTo()putImageData()
quadraticCurveTo()rect()restore()
rotate()save()scale()
setLineDash()setTransform()stroke()
strokeRect()strokeText()transform()
translate()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/286372.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

自动化测试:等待方式

在自动化测试中&#xff0c;等待是一个重要的技术&#xff0c;用于处理页面加载、元素定位、元素状态改变等延迟问题。 等待能够确保在条件满足后再进行后续操作&#xff0c;提高自动化测试的稳定性以及可靠性。 等待方式&#xff1a;显示等待、隐式等待、线程睡眠 1. 显式等…

【学习笔记】环论

子环环同态理想单位元&#xff08;乘法单位元&#xff09;环与子环的单位元无必然关系,即子环不一定有单位元&#xff0c;有也不一定和环的单位元相同 比如 Z 6 Z_6 Z6​有单位元1&#xff0c;其子环 ( 2 ) (2) (2)单位元为4;Z有单位元1&#xff0c;其子环2Z没有单位元若R有单位…

B站不赚钱、“芒果”赚钱难,视频“后浪”火拼跨年夜

又是一年跨年时。 各大视频平台跨年晚会展开火拼&#xff0c;今年谁是赢家&#xff1f; 作为视频“后浪”&#xff0c;芒果超媒&#xff08;300413.SZ&#xff09;、哔哩哔哩&#xff08;09626.HK&#xff0c;下称“B站”&#xff09;此前相继公布了2023年三季报&#xff0c;…

什么是缓存、为什么要用缓存、缓存分类、缓存测试、缓存更新、缓存设计考虑点、缓存测试点

一、缓存 缓存是一种将数据存储在高速缓存中的技术&#xff0c;它可以提高应用程序的性能和响应速度。 二、 为什么要用缓存 1. 高性能(主要目的) 查询耗时&#xff0c;但变化少&#xff0c;又有很多读请求情况下&#xff0c;可以将查询结果放到缓存中。减少对数据库的压力&…

2024/1/2作业

成果 代码 main .c #include "sqi.h" #include "si7006.h" unsigned int num[10] {0xFC, 0x60, 0xDA,0xF2,0x66,0xB6,0xBE,0XE0,0xFE,0xF6}; //unsigned int wei[5]{0x10,0x20,0x40,0x80,0xF0}; unsigned short hum; short tem; extern void printf(…

C++day5作业

全局变量&#xff0c;int monster 10000;定义英雄类hero&#xff0c;受保护的属性string name&#xff0c;int hp,int attck&#xff1b;公有的无参构造&#xff0c;有参构造&#xff0c;虚成员函数 void Atk(){blood-0;}&#xff0c;法师类继承自英雄类&#xff0c;私有属性 …

HarmonyOS 组件通用属性之通用事件 文档参数讲解(按键事件)

最后 我们来看按键事件 按键事件是指 键盘 遥控器等按键设备交互的时候触发的事件 这边 我们还是以按钮为例 给大家演示一下 我们 event 参数的类型 变成了 KeyEvent 我们还是先看看 里面都有些什么东西 还是打开编辑器文档 组件通用信息 通用事件 下面的 按键事件 首先 这…

RocketMQ(Linux版本5.1.4)

1、停止之前的运行服务 [roottssvr1-c1 rocketmq-all-4.7.0-bin-release]# sh bin/mqshutdown namesrv No mqnamesrv running. [roottssvr1-c1 rocketmq-all-4.7.0-bin-release]# [roottssvr1-c1 rocketmq-all-4.7.0-bin-release]# [roottssvr1-c1 rocketmq-all-4.7.0-bin-r…

探索Java的魅力

从本篇文章开始&#xff0c;小编准备写一个关于java基础学习的系列文章&#xff0c;文章涉及到java语言中的基础组件、实现原理、使用场景、代码案例。看完下面一系列文章&#xff0c;希望能加深你对java的理解。 本篇文章作为本系列的第一篇文章&#xff0c;主要介绍一些java…

【实用工具】FFmpeg常用的命令

前言 FFmpeg是一个强大的多媒体处理工具&#xff0c;可以用于处理音频、视频和图像。 命令格式 ffmpeg {1} {2} -i {3} {4} {5} 上面命令中&#xff0c;五个部分的参数依次如下。 1.全局参数 2.输入文件参数 3.输入文件 4.输出文件参数 5.输出文件 常见命令行参数 -c&…

Power Apps 学习笔记 - IOrganizationService Interface

文章目录 1. IOrganization Interface1.1 基本介绍1.2 方法分析 2. Entity对象2.1 Constructor2.2 Properties2.3 Methods 3. 相关方法3.1 单行查询 Retrive3.2 多行查询 RetriveMultiple3.3 增加 Create3.4 删除 Delete3.5 修改 Update 4. 数据查询的不同实现方式4.1 QueryExp…

vite+Vue3学习笔记(3)——界面设计

1 Element-plus 这是一个基于Vue3的组件库&#xff0c;能够快速构建界面样式。 官网链接&#xff1a; https://element-plus.gitee.io/zh-CN/guide/design.html 1.1 基础组件 1.1.1 安装 项目中的终端输入&#xff1a; npm install --save element-plus 1.1.2 引用 1.1.2.1…

RAG LLM App开发实战

大型语言模型&#xff08;LLM&#xff09;无疑改变了我们与信息交互的方式。 然而&#xff0c;对于我们可以向他们提出的要求&#xff0c;它们也有相当多的限制。 LLM&#xff08;例如 Llama-2-70b、gpt-4 等&#xff09;仅了解他们接受过训练的信息&#xff0c;当我们要求他们…

Python爬虫---selenium基本使用(支持无界面浏览器PhantomJS和Chrome handless)

为什么使用selenium&#xff1f; 使用urllib.request.urlopen()模拟浏览器有时候获取不到数据,所以使用selenium (1) selenium是一个用于web应用程序测试的工具 (2) selenium 测试直接运行在浏览器中&#xff0c;就像真正的用户在操作一样 (3) 支持通过各种driver (FirfoxDri…

手机摄影学习

手机摄影学习 手机摄影前期知识1&#xff0c;成像基本原理2&#xff0c;什么是焦距3&#xff0c;快门&#xff08;简称s&#xff09;4&#xff0c;上面功能之间的相互影响5&#xff0c;焦点6&#xff0c;过爆、欠曝7&#xff0c;cmos&#xff08;感光芯片&#xff09;、测光、聚…

【web】vue 播放后端(flask)发送的 mp3 文件

文章目录 演示后端&#xff08;flask&#xff09;前端&#xff08;vue3&#xff09;重要说明 演示 后端&#xff08;flask&#xff09; 后端返回的是 mp3 文件的 url&#xff0c;是可以直接在浏览器上打开后播放的处理跨域请求pip install flask-cors后端代码from flask impor…

骑砍战团MOD开发(30)-游戏大地图map.txt

骑砍1战团mod开发-大地图制作方法_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1rz4y1c7wH/ 一.骑砍游戏大地图 骑砍RTS视角游戏大地图 大地图静态模型(map.txt) 军团/城镇图标(module_parties.py). 骑砍大地图的战争迷雾和天气通过API进行管理和控制: # Weather-h…

Selenium框架添加CONNECT以抓取https网站

Selenium框架 Selenium是一个用于Web应用程序测试的强大工具&#xff0c;它提供了一系列的API&#xff0c;可以模拟用户在浏览器中的操作&#xff0c;包括点击、填写表单、导航等。在进行网络提取数据时&#xff0c;https网站的数据提取一直是一个技术难点。Selenium作为一个自…

git 如何撤销历史某次merge

git&#xff0c;如何 撤销某一次历史提交或merge&#xff0c;并保留该版本的后续提交&#xff1f; 场景1&#xff1a; 你有两个功能迭代版本的分支&#xff0c;一个是 15 号上线&#xff0c;一个是25号上线。5号的时候产品突然说&#xff0c;这两个版本一起上&#xff0c;然后…

[Flutter]Json和序列化数据

为较小的项目使用手动序列化数据 手动 JSON 解码是指在 dart:convert 中使用内置的 JSON 解码器。它包括将原始 JSON 字符串传递给 jsonDecode() 方法&#xff0c;然后在产生的 Map<String, dynamic> 计算结果中寻找你需要的值。它没有外部依赖或者特定的设置过程&#…