1.绘制矩形轨迹

  • 相关语法:ctx.rect(x,y,width,height),根据传入的参数(起始坐标和宽高)用来绘制一个矩形轨迹
  • 注意:ctx.rect()和ctx.lineTo()绘制的都是轨迹,需要配合stroke或者fill()才能在画布中看到效果
<script>
var canvas = document.querySelector("canvas")
var ctx = canvas.getContext("2d") // 根据原点和宽高绘制矩形轨迹
ctx.rect(50,50,100,100)
// 设置描边的颜色
ctx.strokeStyle = "red"
// 设置直线宽度
ctx.lineWidth = 10
// 开始绘制描边
ctx.stroke() // 绘制填充的矩形
// 开启新路径
ctx.beginPath()
// 根据原点和宽高绘制矩形轨迹
ctx.rect(200,50,100,100)
// 设置填充颜色
ctx.fillStyle = "blue"
// 开始填充
ctx.fill()
</script>

2.绘制矩形

  • ctx.strokeRect(x,y,width,height):绘制描边的矩形,有独立路径
  • ctx.fillRect(x,y,width,height):绘制填充的矩形,有独立路径
  • 注意:这两个方法不同于rect(),它有独立的路径,且自带绘制,无需调用stroke()和fill()
<script>
var canvas = document.querySelector("canvas")
var ctx = canvas.getContext("2d") // 先设置描边颜色
ctx.strokeStyle= "red"
// 设置直线宽度
ctx.lineWidth = 10
// 绘制描边的矩形
ctx.strokeRect(50,50,100,100) // 设置填充的颜色
ctx.fillStyle = "blue"
// 绘制填充的矩形
ctx.fillRect(200,50,100,100)
</script>

3.清除区域内容

  • 相关语法:ctx.clearRect(x,y,width,height),清除这个矩形区域的内容(橡皮擦)
  • 示例1:清除整个画布的内容 400*300
<script>
var canvas = document.querySelector("canvas")
var ctx = canvas.getContext("2d") // 先设置描边颜色
ctx.strokeStyle= "red"
// 设置直线宽度
ctx.lineWidth = 10
// 绘制描边的矩形
ctx.strokeRect(50,50,100,100) // 设置填充的颜色
ctx.fillStyle = "blue"
// 绘制填充的矩形
ctx.fillRect(200,50,100,100) // 清除整个画布的内容
ctx.clearRect(0,0,400,300)
</script>
  • 示例2:清除一部分画布的内容
<script>
var canvas = document.querySelector("canvas")
var ctx = canvas.getContext("2d") // 先设置描边颜色
ctx.strokeStyle= "red"
// 设置直线宽度
ctx.lineWidth = 10
// 绘制描边的矩形
ctx.strokeRect(50,50,100,100) // 设置填充的颜色
ctx.fillStyle = "blue"
// 绘制填充的矩形
ctx.fillRect(200,50,100,100) // 清除一部分区域的内容
ctx.clearRect(200,50,100,100)
</script>

4.绘制线性渐变的矩形

  • 由来:前面绘制的矩形填充颜色都很单一,可以使用相关API来绘制一个线性渐变的矩形
  • 相关API:createLinearGradient(x0,y0,x1,y1),addColorStop(0.5, 'green')

步骤一:创建渐变方案 ,传入起点坐标和结束坐标,来确定渐变的方向

步骤二:设置渐变方案的颜色

步骤三:将其设置成填充颜色

<script>
var canvas = document.querySelector("canvas")
var ctx = canvas.getContext("2d") // 创建线性渐变方案(传入起点坐标和结束坐标)(长度200)(水平方向)
var linearGradient = ctx.createLinearGradient(50, 0, 250, 0)
// 设置渐变的颜色
linearGradient.addColorStop(0, "red") //起始颜色
linearGradient.addColorStop(0.5, "green") //中间颜色
linearGradient.addColorStop(1, "blue") //末尾颜色
// 使用渐变色
ctx.fillStyle = linearGradient // 绘制填充的矩形(长度200)(水平方向起点一致)
ctx.fillRect(50, 50, 200, 20)
// 绘制填充的矩形(长度100)(水平方向起点一致)
ctx.fillRect(50, 100, 100, 20)
// 绘制填充的矩形(长度250)(水平方向起点一致)
ctx.fillRect(50, 150, 250, 20) // 绘制填充的矩形(长度250)(水平方向起点0)
ctx.fillRect(0, 200, 250, 20)
</script>

PS:不在渐变方案坐标以内的颜色按0%和100%时的颜色填充(建议渐变方案起点和长度要和矩形一致)

5.绘制径向渐变的矩形

  • 相关API:createRadialGradient(x0,y0,r0,x1,y1,r1),创建放射状/圆形渐变对象,x0/y0,r0为渐变开始的圆,x1/y1/r1为渐变结束的圆
<script>
var canvas = document.querySelector("canvas")
var ctx = canvas.getContext("2d") // 创建径向渐变方案(传入两个圆的坐标和半径)
var radialGradient = ctx.createRadialGradient(200,150,20,200,150,100)
// 设置渐变的颜色
radialGradient.addColorStop(0,"red")
radialGradient.addColorStop(1,"blue")
// 使用渐变方案作为填充色
ctx.fillStyle = radialGradient // 绘制矩形(与渐变方案大小,位置一致)
ctx.fillRect(100,50,200,200)
</script>

PS:不在渐变方案坐标以内的颜色100%时的颜色填充(建议渐变方案起点和大小要和矩形一致)

6.自定义渐变的矩形

  • 思路:无数个不同颜色的小矩形就可以组成一个渐变的矩形

以红色渐变成绿色为例:红rgb(255,0,0) 蓝rgb(0,0,255) 修改其中的数值就可以得到介于红绿之间的颜色

<script>
var canvas = document.querySelector("canvas")
var ctx = canvas.getContext("2d") //起始颜色(红)
var R0 = 255,G0 = 0,B0 = 0
//结束颜色(蓝)
var R2 = 0,G2 = 0, B2 = 255
//当前颜色
var R=R0,G=G0,B=B0 //起点坐标
var x0 = 50,y0 = 50
// 矩形宽高
var width = 300,height = 50 //当前坐标
var x=x0,y=y0
for(var x=x0;x<x0+width;x++){
//计算颜色
R = R + (R2-R0)/width
G = G + (G2-G0)/width
B = B + (B2-B0)/width //设置颜色
ctx.fillStyle = `rgb(${R},${G},${B})`
//开启路径
ctx.beginPath()
//绘制填充的小矩形
ctx.fillRect(x,y,1,height)
}
</script>

效果图:

canvas(三)绘制矩形的更多相关文章

  1. [HTML5 Canvas学习]绘制矩形

    1.使用strokeRect和fillRect方法绘制矩形 a.strokeRect是绘制一个不填充的矩形 b.fillRect是绘制一个填充的矩形 代码: <script> var ca ...

  2. Javascript高级编程学习笔记(86)—— Canvas(3)绘制矩形

    绘制矩形 矩形是唯一一种可以直接在2D上下文中绘制的形状. 与矩形有关的方法包括: fillRect() strokeRect() clearRect() 上述方法都接收四个参数: 绘制矩形的 X 坐 ...

  3. Canvas:绘制矩形

    函数 CanvasPath.rect(x, y, w, h) 参数名 类型 描述 x Number 矩形起始位置 y Number 矩形起始位置 w Number 矩形宽度 h Number 矩形高度 ...

  4. canvas快速绘制圆形、三角形、矩形、多边形

    想看前面整理的canvas常用API的同学可以点下面: canvas学习之API整理笔记(一) canvas学习之API整理笔记(二) 本系列文章涉及的所有代码都将上传至:项目代码github地址,喜 ...

  5. canvas学习总结六:绘制矩形

    在第三章中(canvas学习总结三:绘制路径-线段)我们提高Canvas绘图环境中有些属于立即绘制图形方法,有些绘图方法是基于路径的. 立即绘制图形方法仅有两个strokeRect(),fillRec ...

  6. Canvas 绘制矩形,圆形,不规则图形(线条),渐变等图像效果

    绘制矩形: getContext("2d") 对象是内建的 HTML5 对象,拥有多种绘制路径.矩形.圆形.字符以及添加图像的方法. fillStyle 方法将其染成红色,fill ...

  7. canvas 绘制 矩形 圆形

    <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head> <tit ...

  8. canvas 绘制矩形和圆形

    canvas绘制有两神方法:1).填充(fill)填充是将图形内部填满. 2).绘制边框 (stroke)绘制边框是不把图形内部填满,只是绘制图形的外框. 当我们在绘制图形的时候,首先要设定好绘制的样 ...

  9. Canvas入门(1):绘制矩形、圆、直线、曲线等基本图形

    来源:http://www.ido321.com/968.html 一.Canvas的基础知识 Canvas是HTML 5中新增的元素,专门用于绘制图形.canvas元素就相当于一块“画布”,一块无色 ...

  10. canvas 绘制矩形

    XXX(x,y,width,height)   x矩形左上角x坐标                                   y矩形左上角y坐标                       ...

随机推荐

  1. UWP 通过 .NET 9 和Native AOT 的支持实现 UWP 应用的现代化

    微软(9 月 11 日)发布博文,微软正在预览对 .NET 9 的 UWP(通用 Windows 平台)支持,为现有 UWP 开发人员提供一条使用最新的 .NET 和本机 AOT 实现其应用程序现代化 ...

  2. JavaScript – 单线程 与 执行机制 (event loop)

    前言 因为在写 RxJS 系列,有一篇要介绍 Scheduler.它需要对 JS 执行机制有点了解,于是就有了这里篇. 参考 知乎 – 详解JavaScript中的Event Loop(事件循环)机制 ...

  3. 十,Spring Boot 的内容协商的详细剖析(附+Debug调试说明)

    十,Spring Boot 的内容协商的详细剖析(附+Debug调试说明) @ 目录 十,Spring Boot 的内容协商的详细剖析(附+Debug调试说明) 1. 基本介绍 2. 准备工作 3. ...

  4. 这10种分布式ID,太绝了!

    前言 分布式ID,在我们日常的开发中,其实使用的挺多的. 有很多业务场景在用,比如: 分布式链路系统的trace_id 单表中的主键 Redis中分布式锁的key 分库分表后表的id 今天跟大家一起聊 ...

  5. manim边学边做--空心多边形

    空心的多边形Cutout是一种比较特殊的多边形,主要用于解决与形状.大小.位置等相关的数学问题. Cutout多边形可以定义物体表面的空洞或凹陷部分,从而更准确地模拟现实世界中的复杂形状. 比如,在P ...

  6. Kubernetes基础(基本概念、架构)(十)

    一.介绍 Kubernetes(简称 K8S) 的出现是容器化技术发展的必然结果,容器化是应用程序级别的虚拟化,运行单个内核上有多个独立的用户空间实例,这些实例就是容器:容器提供了将应用程序的代码.运 ...

  7. Maya 2019.2 Mtoa 无法正常加载并报错

    事件起因: 在开始安装 Maya2019.2 时自动安装的 Mtoa 的版本为 5.3.1,但是在插件管理器里无法启用插件,于是乎去网上下了一个低的版本 5.1.1,虽然可以使用但是渲染出来的东西不能 ...

  8. 16 模块time、datetime、random、hashlib、logging

    1. 时间模块time.datetime 在python中,表示时间有三种方式:时间戳 格式化的时间字符串(Format String): '2022-03-01' 时间元组(struct_time) ...

  9. 1.2 HELLO 三角形

    这一节,我觉得是相当有难度的.渲染一个三角形,就需要介绍GLSL语言,图形渲染管线(Graphics Pipeline)以及着色器(Shader),标准化设备坐标(NDC)等诸多概念. 图形渲染管线和 ...

  10. vue 中 slot 的使用方式,以及作用域插槽的用法

    分类:插槽又分为匿名插槽.具名插槽以及作用域插槽 : 匿名插槽,我们又可以叫它单个插槽或者默认插槽 因为组件标签中间是不允许写内容的,但是可以插入 插槽 :template 标签 : 插槽的使用方法 ...