canvas基础:绘制线段,绘制多边形

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

文章目录

    • 使用路径绘制图形需要一些额外的步骤:
    • 用到的方法:
    • 示例效果图
    • 示例源代码(共97行)
    • canvas基本属性
    • canvas基础方法

如何通过canvas通绘制线段,绘制多边形呢? 图形的基本元素是路径。路径是通过不同颜色和宽度的线段或曲线相连形成的不同形状的点的集合。一个路径,甚至一个子路径,都是闭合的。

使用路径绘制图形需要一些额外的步骤:

创建路径起始点
调用绘制方法去绘制出路径
把路径封闭
一旦路径生成,通过描边或填充路径区域来渲染图形。

用到的方法:

beginPath()
新建一条路径,路径一旦创建成功,图形绘制命令被指向到路径上生成路径
moveTo(x, y)
把画笔移动到指定的坐标(x, y)。相当于设置路径的起始点坐标。
lineTo(x, y)
画线到指定的坐标(x, y)。相当于一段的终点。
closePath()
闭合路径之后,图形绘制命令又重新指向到上下文中
stroke()
通过线条来绘制图形轮廓
fill()
通过填充路径的内容区域生成实心的图形

示例效果图

在这里插入图片描述

示例源代码(共97行)


/*
* @Author: 大剑师兰特(xiaozhuanlan),还是大剑师兰特(CSDN)
* @此源代码版权归大剑师兰特所有,可供学习或商业项目中借鉴,未经授权,不得重复地发表到博客、论坛,问答,git等公共空间或网站中。
* @Email: 2909222303@qq.com
* @weixin: gis-dajianshi
* @First published in CSDN
* @First published time: 2023-11-27
*/
<template>
	<div class="container">
		<div class="top">
			<h3>canvas绘制线段,绘制多边形</h3>
			<div>大剑师兰特, 还是大剑师兰特,gis-dajianshi</div>
			<h4>
				<el-button type="primary" size="mini" @click="drawLine()">绘制直线</el-button>
				<el-button type="primary" size="mini" @click="drawPolygon1()">绘制多边形(直连)</el-button>
				<el-button type="primary" size="mini" @click="drawPolygon2()">绘制多边形(关闭路径)</el-button>
			</h4>
		</div>
		<div class="dajianshi ">
			<canvas id="dajianshi" width="800" height="400"></canvas>
		</div>

	</div>
</template>
<script>
	export default {
		data() {
			return {
				ctx: null,
			}
		},
		mounted() {
			this.setCanvas()
		},
		methods: {
			setCanvas() {
				var canvas = document.getElementById('dajianshi');
				if (!canvas.getContext) return;
				this.ctx = canvas.getContext("2d");
			},
			drawLine() {
                    this.ctx.beginPath();
                    this.ctx.moveTo(50, 50);
                    this.ctx.lineTo(600, 50);
                    this.ctx.lineTo(600, 200);
					this.ctx.stroke(); //绘制路径。
					this.ctx.closePath();
			},
			drawPolygon1() {
				this.ctx.beginPath();
				this.ctx.moveTo(50, 50);
				this.ctx.lineTo(100, 300);
				this.ctx.lineTo(50, 300);
				this.ctx.lineTo(50, 50);
                this.ctx.fillStyle= 'rgba(250,0,0,0.4)';
				this.ctx.fill(); //绘制路径。
			},
			drawPolygon2() {
                    this.ctx.beginPath();
                    this.ctx.moveTo(100, 100);
                    this.ctx.lineTo(700, 50);
                    this.ctx.lineTo(700, 200);
					this.ctx.closePath();
					this.ctx.strokeStyle= 'rgba(250,0,0,0.8)';
					this.ctx.stroke(); 
					
			},

		}
	}
</script>

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

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

	.dajianshi {
		margin: 10px auto 0;
		border: 1px solid #ccc;
		width: 800px;
		height: 400px;
		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()

http://www.niftyadmin.cn/n/5219322.html

相关文章

一位达人总结的ArcGIS制图技巧,值得学习和拥有

Part 1 制图综述 1.1 制图的目的 随着GIS在各行各业的深入应用&#xff0c;各信息化部门和生产单位都逐渐建立起自己的GIS的应用&#xff0c;同时积累了大量的地理数据。随着应用深度和广度的推进&#xff0c;针对数据建立专题应用越来越迫切&#xff0c;对行业专题制图的需…

内网穿透的应用-Jupyter Notbook+cpolar内网穿透实现公共互联网访问使用数据分析工作

文章目录 1.前言2.Jupyter Notebook的安装2.1 Jupyter Notebook下载安装2.2 Jupyter Notebook的配置2.3 Cpolar下载安装 3.Cpolar端口设置3.1 Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 在数据分析工作中&#xff0c;使用最多的无疑就是各种函数、图表、…

无公网IP环境如何实现远程访问连接家里内网的威联通QNAP NAS

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

Windows系统下搭建PXE Server

在给一台服务器初始安装OS时一般有以下几种方式&#xff1a; 1、通过BMC挂载iso镜像来安装&#xff1b; 2、通过U盘启动来安装&#xff1b; 3、通过网络启动来安装&#xff1b; 方式1和方式2只能一台一台地进行&#xff0c;且需要有键盘和显示器&#xff0c;效率低下&#xff…

【网络安全】-常见的网站攻击方式详解

文章目录 介绍1. SQL 注入攻击攻击原理攻击目的防范措施 2. 跨站脚本攻击&#xff08;XSS&#xff09;攻击原理攻击目的防范措施 3. CSRF 攻击攻击原理攻击目的防范措施 4. 文件上传漏洞攻击原理攻击目的防范措施 5. 点击劫持攻击原理攻击目的防范措施 结论 介绍 在数字时代&a…

MySQL(主从复制)

简述&#xff1a;主从复制&#xff0c;是用来建立一个和主数据库完全一样的数据库环境&#xff0c;称为从数据库&#xff0c;主数据库一般是准实时的 业务数据库、事务处理库&#xff0c;从库做查询库。 复制过程简单的说就是 master 将数据库的改变写入二进制日志&#xff0c…

什么是面向对象编程及面向过程编程,它们的异同和优缺点

面向对象编程&#xff08;Object-Oriented Programming, OOP&#xff09;和面向过程编程&#xff08;Procedure-Oriented Programming, POP&#xff09;是两种不同的编程范式&#xff0c;它们在编程中有着显著的区别。 面向过程编程&#xff08;POP&#xff09;&#xff1a; …

计算机组成原理-Cache写策略

文章目录 总览写命中写回法全写法 写不命中写分配法非写分配法 多级Cache总结 总览 写命中 写回法 数据不一致指的是Cache中的和主存中的数据不一致 全写法 写缓冲 利用写缓冲使得将写入Cache的数据在写入Cache的数据同时也会写入写缓冲。然后再在 CPU在干其他事时有控制电…