如何在HTML Canvas中正确绘制矩形(解决fillRect不显示的问题)

canvas中调用`fillrect(x, y, width, height)`时若宽高为0,将无法渲染任何可见图形;必须确保`width`和`height`为大于0的数值,才能正常显示矩形。

在HTML Canvas绘图中,fillRect() 是最基础的矩形绘制方法,其签名严格为:

context.fillRect(x, y, width, height);

其中 x 和 y 表示矩形左上角坐标(相对于canvas左上角原点),而 width 和 height 必须为正值——若任一值为 0 或负数,浏览器将绘制一个“零面积”区域,结果就是完全不可见,且不会报错,极易被忽略。

例如,原始代码中的这一行:

context.fillRect(50, 50, 0, 0); // ❌ 宽=0,高=0 → 无渲染

虽然语法合法、控制台无报错,但实际绘制了一个“隐形矩形”,导致开发者误以为Canvas失效。

✅ 正确做法是明确指定合理的宽高(如 50 像素):

const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");

function draw() {
  // 绘制绿色方块(50×50,位于(50, 50))
  ctx.fillStyle = "rgb(0, 200, 0)";
  ctx.fillRect(50, 50, 50, 50);

  // 绘制红色方块(50×50,位于画布原点)
  ctx.fillStyle = "rgb(200, 0, 0)";
  ctx.fillRect(0, 0, 50, 50);
}

draw();

⚠️ 注意事项:

  • 确保 元素已存在于DOM中,且ID匹配(如 id="canvas")
  • 推荐在 draw() 中增加上下文存在性检查(if (ctx)),提升健壮性;
  • 若Canvas尺寸未显式设置(通过HTML属性 width/height 或CSS),可能因默认尺寸(300×150)或CSS缩放导致视觉异常——建议始终用HTML属性定义画布分辨率:

总结:Canvas绘图不是“有调用就有显示”,而是严格依赖参数语义。牢记 fillRect 的四参数含义,杜绝传入 0 作为宽高,即可快速定位并修复此类“空白画布”问题。