【HTML 5】HTML5 Canvas rect(), strokeRect() 和 fillRect() 的区别
他们都接受相同的参数,见页面表格。唯一不同的实现方式与效果方面有差异。
其中fillRect()与strokeRect() 在调用后会立即在画布上画面效果,而rect()不会立即将图形画出,只有在调用了stroke()方法之后,才会实际作用于画布。
fillRect()
从字面上很好理解fillRect()与其他两个的区别,它是执行填充操作。填充一个矩形区域。
下面是来自W3SHOOL中文站点对它的具体参数及API的详解:
定义和用法
fillRect() 方法绘制"已填色"的矩形。默认的填充颜色是黑色。
参数 |
描述 |
x |
矩形左上角的 x 坐标 |
y |
矩形左上角的 y 坐标 |
width |
矩形的宽度,以像素计 |
height |
矩形的高度,以像素计 |
strokeRect()
strokeRect() 方法绘制矩形(不填色)。笔触的默认颜色是黑色。
下面看一下strokeRect() 与fillRect()的例子。
<html> <head> <title>HTML 5 Canvas rect</title> </head> <body> <canvas id="c" width="400" height="300"></canvas> </body> <script type="text/javascript"> var c = document.getElementById('c'); var ctx = c.getContext('2d'); // draw rectangle via strokeRect() method ctx.strokeRect(0, 0, 100, 100); // draw rectangle via fillRect() method ctx.fillRect(101, 0, 100, 100); </script> </html>
效果:
rect()
rect() 方法创建矩形。但它并不会真正将矩形画出,只能调用stroke() 或 fill()后才会真正作用于画布。
下面的例子将展示这一特性。
<html> <head> <title>HTML 5 Canvas rect</title> </head> <body> <canvas id="c" width="400" height="300"></canvas> </body> <script type="text/javascript"> var c = document.getElementById('c'); var ctx = c.getContext('2d'); // draw rectangle via strokeRect() method ctx.rect(0, 0, 100, 100); //set time out, the rectngle will be drawed out after 5 secs. setTimeout(function () { ctx.stroke() }, 5000) </script> </html>
虽然执行了rect(),但只有5秒后执行了stroke()后,画布上才会出现矩形图案。
参考:
http://www.rgraph.net/blog/2013/january/the-difference-between-rect-strokerect-and-fillrect.html

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述