canvas绘制线条、矩形、曲线及填充

2023-11-14

1.绘制线条和填充

1.绘制线段的API是上下文对象的方法;

2.beginPath:开始定义一条新的路径;

3.moveTo:开始定义一条新的子路径,该方法确定了线段的起点;

4.lineTo:将上面定义的线段起点和指定的新的点连接起来;

5.到这里只是规划好了思路,还没有在画布上画出任何图形;

6.fill():填充区域,此时只是填充,起点和终点并没有连接起来;

7.closePath:会把起点和终点连接起来;

8.stroke():开始绘制图形,当前路径下的所有子路经都会绘制出来;

9.如果要接着绘制新的路径,记得调用beginPath()方法;

2.矩形的绘制

1)rect():在当前子路经添加一条弧线;

​    语法:context.rect(x,y,width,height);

​    四个参数: 起点坐标x,y:左上角坐标; 宽度width:矩形的宽度; 高度height:矩形的高度;

(2)strokeRect()方法可以直接绘制一个矩形;

​    语法:context.strokeRect(x,y,width,height);

3.曲线的绘制和填充

arc():在当前子路经添加一条弧线;

语法:context.arc(x,y,r,sAngle,eAngle,counterclockwise);

x 圆的中心的 x 坐标。
y 圆的中心的 y 坐标。
r 圆的半径。
sAngle 起始角,以弧度计。(弧的圆形的三点钟位置是 0 度)。
eAngle 结束角,以弧度计。
counterclockwise 可选。规定应该逆时针还是顺时针绘图。False = 顺时针,true = 逆时针。

例1:绘制线条画一个三角形

<style>
	#box {
		border: 1px gray solid;
		/* width:200px;
		height: 200px; *///宽高不写在css中写在canvas标签中
		}
</style>
<canvas id="box" width="600" height="600">
</canvas>

<script>
	var canvas = document.querySelector("#box")
	var ctx = canvas.getContext("2d") //Context 上下文
	ctx.lineWidth=5//线条宽度
	ctx.strokeStyle="yellow"//线条颜色

	ctx.moveTo(100, 100)
	ctx.lineTo(300, 300)

	ctx.moveTo(400, 100)
	ctx.lineTo(100, 100)

	ctx.moveTo(400, 100)
	ctx.lineTo(300, 300)

    ctx.closePath()
    ctx.stroke()
</script>

其中的js代码可等效为:

//lineTo 会把上一次的终点作为这一次的起点,没有上一次的终点那就没有这一次的起点
ctx.lineTo(100, 100)
ctx.lineTo(300, 300)
ctx.lineTo(400, 100)
ctx.lineTo(100, 100)
ctx.closePath()
ctx.stroke()

lineTo 会把上一次的终点作为这一次的起点,没有上一次的终点那就没有这一次的起点。

例2:线条绘制矩形及填充

<style>
	#box {
		border: 1px gray solid;
		}
</style>
<canvas id="box" width="600" height="600">
</canvas>

<script>
var canvas = document.querySelector("#box")
var ctx = canvas.getContext("2d") //Context 上下文
			
//线条绘制矩形
    ctx.moveTo(200,300)
    ctx.lineTo(200,500)
    ctx.lineTo(400,500)
    ctx.lineTo(400,300)
    ctx.lineTo(200,300)
    ctx.closePath()//闭合轨迹 会把线连接到某一点形成闭合轨迹
    ctx.strokeStyle="red"
    ctx.lineWidth=3
    ctx.stroke()
			
    ctx.fillStyle="greenyellow"
    ctx.fill()//把闭合轨迹填充上颜色,默认颜色是黑色			
</script>

直接绘制矩形

绘制矩形
ctx.rect(200,100,300,400)
ctx.stroke()
ctx.fillStyle="greenyellow"
ctx.fill()
			
ctx.fillStyle="blue"
ctx.fillRect(200,100,300,400)

例3:绘制一段曲线

<style>
	#box {
		border: 1px gray solid;
		}
</style>
<canvas id="box" width="600" height="600">
</canvas>

<script>
	var canvas = document.querySelector("#box")
	var ctx = canvas.getContext("2d") //Context 上下文
	ctx.lineWidth=5


	let deg=Math.PI/180
	ctx.arc(300,300,200,0*deg,270*deg,true)
	ctx.stroke()
			
</script>

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

canvas绘制线条、矩形、曲线及填充 的相关文章

随机推荐

  • 18-Go语言之单元测试

    go test工具 Go语言中的测试依赖go test命令 编写测试代码和编写普通的Go代码过程是类似的 并不需要学习新的语法或工具 go test命令是一个按照一定约定和组织的测试代码的驱动程序 在包目录内 所有以 test go为后缀的
  • 就业DAY7_web服务器_http协议

    import socket def servece client new socket 为这个客户端返回数据 1 接收浏览器发送过来的请求 即http请求 GET HTTP 1 1 request new socket recv 1024
  • 【Unity3D】如何快速做出点击按钮切换场景

    1 首先建立第一个场景 在Canvas创建一个Button 快捷键为Ctrl N 再按Ctrl S保存该场景到文件 如图所示 图中的 开始 为按钮 2 创建第二个场景 作为点击按钮后切换的场景 点击左上角 File Build Settin
  • 精心挑选了三种热门的Python技术书籍送给大家!!

    本周三狗哥给大家挑选了三种热门的Python书籍 送给大家 每种书送两本 共6本 文末查看送书规则 Python大数据分析 公众号回复 送书 Python最优化算法实战 扫码回复 送书 Python数据分析 扫码回复 送书 公众号回复 送书
  • js 把带有对象的数组里的某个属性组成新的数组

    如果想将数组对象中的某个属性组成一个新的数组 可以使用Array map 方法 这个方法会遍历原始数组的每个元素 并返回一个新的数组 其中包含指定属性的值 以下是一个示例 假设有一个包含对象的数组 每个对象都有一个name属性 你想要将所有
  • html5新特性

    目录 使用语义化标签的目的 1 html5新增的语义化标签 2 html新增的多媒体标签 1 视频 video 2 音频 audio 属性 object fit 3 html5新增的input表单元素属性 1 新增的input标签type属
  • 准备加入第二个项目(第5960小时加入)

    今天 老师过来办事 看了我做的东西后 邀请我加入他的项目 让我受宠若惊 2012年10月 我加入老师的项目后 2天内落荒而逃 因为一句代码都没有写出来 再然后 老师以我没有项目经验为由 拒绝了我后来想加入项目的要求 2年后 老师邀请我去做项
  • 安装Anaconda科学计算包

    Anaconda介绍 最近在看 Python语言及其应用 这本书 作为一本介绍Python语言和应用的书非常不错 在这本书的最后 介绍了一些Python常用的第三方类库 像科学计算库 金融计算库 图形图像库等等 其中也介绍了Anaconda
  • 移动端H5页面生成图片解决方案

    现在有很多微信公众号运营活动 都有生成图片的需求 生成图片后可以发送给好友和发到朋友圈扩散 利于产品的宣传 1 生成图片可以用canvas 但是由于已经有了html2canvas这个开源库 所以为了节省时间就没有自己写了 github地址
  • 为什么文件删除了但磁盘空间没有释放?

    1 案例现象 这天 监控系统发来一条告警消息 内容说某台服务器根目录磁盘占用空间达到阈值 超过百分之八十了 登上服务器 df Th 看一下 发现磁盘空间确实不够用了 root localhost df Th 文件系统 类型 容量 已用 可用
  • java怎么从一个类传值到另一个类,关于JAVA的引用类型传值.

    方法参数传递都按值传递 对于基本类型 传递原始值 对于对象类型 传递其指向的对象的地址值 多个同类型不同的变量可以指向同一个对象 但是其中任何一个变量被重新赋值 也就是指向一个新的对象时 不影响其它变量的指向 方法定义的形参 在调用的发生的
  • Socket编程之聊天程序 - 模拟Fins/ModBus协议通信过程

    设备控制软件编程涉及到的基本通信方式主要有TCP IP与串口 用到的数据通信协议有Fins与ModBus 更高级别的通信如 net中的Remoting与WCF在进行C S架构软件开发时会采用 本篇文章结合Fins ModBus协议的指令帧结
  • 关于前端获取后端传输的参数并在js中应用该参数

    在进行dynamicTree名称获取时 如果是涉及到不同数据库需要使用不同的dynamicTree的xml文件且该名称在前端写死状态 可以采用setAttribute方法将值赋给前端 前端用 接收该值 并在js处使用document get
  • TCP UDP协议的应用以及高级IO的介绍

    TCP UDP协议的应用以及高级IO的介绍 网络通信协议 模型 TCP和UDP两个协议都是一对多的网络通信模型 TCP编程模型 UDP编程模型 实例 TCP模型 聊天室的服务器 有私密消息功能以及列出聊天者的功能 include
  • RCE远程命令执行漏洞挖掘思路

    RCE漏洞可能出现在哪些地方 1 URL上 在url参数上 不仅仅可能存在ssrf漏洞 也有很大概率存在命令执行 很大可能调用系统命令如curl payload例子 index php id 2 phpinfo ttp www xxx co
  • ue4编辑模型时,让模型底部刚好在地面上的方法

    选中模型按住End键
  • Matlab 公式大全

    1 MATLAB公式 例如 在命令窗口中输入sin pi 5 然后单击回车键 则会得到该表达式的值 sin pi 5 ans 0 5878 例如 sin 1 9 pi sin 2 9 pi sin 3 9 pi sin 4 9 pi sin
  • linux软件共用的依赖关系,利用 yum 解决 Linux 软件包的依赖关系

    在Linux系统软件安装包依赖关系是一个很烦恼的问题 yum能够从指定的服务器自动下载RPM包并且安装 可以自动处理依赖性关系 并且一次安装所有依赖的软体包 无须繁琐地一次次下载 安装 可以利用ftp和Createrepo共同搭建本地软件库
  • C语言结构体中定义函数指针详解

    C语言结构体中定义函数指针详解 结构体指针函数应用场景之一 驱动程序编写 结构体的一些基本用法 形式 先定义结构体类型 再定义变量 形式 在定义类型的同时定义变量 形式 直接定义变量 用无名结构体直接定义变量只能一次 结构体指针在嵌入式Li
  • canvas绘制线条、矩形、曲线及填充

    1 绘制线条和填充 1 绘制线段的API是上下文对象的方法 2 beginPath 开始定义一条新的路径 3 moveTo 开始定义一条新的子路径 该方法确定了线段的起点 4 lineTo 将上面定义的线段起点和指定的新的点连接起来 5 到