ZetCode

JavaScript Canvas 矩形教程

最后修改于 2025 年 4 月 3 日

在本文中,我们探讨了 JavaScript 中的 Canvas 矩形方法。这些方法对于在 HTML Canvas 上绘制矩形至关重要。掌握矩形绘制对于创建 UI 元素和可视化至关重要。

基本定义

Canvas 矩形是使用特定方法绘制的基本形状。主要方法是 fillRectstrokeRectclearRect。每种方法在矩形绘制中都有不同的用途。

矩形由其左上角坐标、宽度和高度定义。您可以使用颜色、渐变、图案等来自定义其外观。

基本矩形绘制

本示例演示如何在 canvas 上绘制一个简单的填充矩形。

index.html
<!DOCTYPE html>
<html>
<head>
    <title>Basic Canvas Rectangle</title>
</head>
<body>

<canvas id="myCanvas" width="300" height="200"></canvas>

<script>
    const canvas = document.getElementById('myCanvas');
    const ctx = canvas.getContext('2d');
    
    ctx.fillStyle = 'blue';
    ctx.fillRect(50, 50, 200, 100);
</script>

</body>
</html>

在这个基本示例中,我们创建了一个 canvas 元素并获取了它的 2D 渲染上下文。我们使用 fillStyle 将填充颜色设置为蓝色。

fillRect 方法在位置 (50,50) 处绘制一个填充矩形,宽度为 200,高度为 100。这展示了在 Canvas 上创建矩形的最简单方法。

描边矩形

此示例显示了如何绘制一个矩形轮廓(描边)而不填充。

index.html
<!DOCTYPE html>
<html>
<head>
    <title>Stroked Rectangle</title>
</head>
<body>

<canvas id="myCanvas" width="300" height="200"></canvas>

<script>
    const canvas = document.getElementById('myCanvas');
    const ctx = canvas.getContext('2d');
    
    ctx.strokeStyle = 'red';
    ctx.lineWidth = 5;
    ctx.strokeRect(50, 50, 200, 100);
</script>

</body>
</html>

在这里,我们使用 strokeRect 而不是 fillRect 来仅绘制轮廓。strokeStyle 将轮廓颜色设置为红色。

lineWidth 属性控制轮廓的粗细。此示例演示了如何创建具有自定义样式的矩形边框。

清除矩形区域

此示例演示了如何使用 clearRect 擦除 Canvas 的部分区域。

index.html
<!DOCTYPE html>
<html>
<head>
    <title>Clear Rectangle</title>
</head>
<body>

<canvas id="myCanvas" width="300" height="200"></canvas>

<script>
    const canvas = document.getElementById('myCanvas');
    const ctx = canvas.getContext('2d');
    
    // Draw a filled rectangle
    ctx.fillStyle = 'green';
    ctx.fillRect(0, 0, 300, 200);
    
    // Clear a rectangular area
    ctx.clearRect(50, 50, 200, 100);
</script>

</body>
</html>

首先,我们将整个 Canvas 填充为绿色。然后,我们使用 clearRect 擦除中间的一个矩形区域。

clearRect 方法使像素透明。它可用于擦除 Canvas 的部分区域或在绘图中创建透明孔。

渐变填充矩形

此示例显示了如何用线性渐变填充矩形。

index.html
<!DOCTYPE html>
<html>
<head>
    <title>Gradient Rectangle</title>
</head>
<body>

<canvas id="myCanvas" width="300" height="200"></canvas>

<script>
    const canvas = document.getElementById('myCanvas');
    const ctx = canvas.getContext('2d');
    
    // Create gradient
    const gradient = ctx.createLinearGradient(0, 0, 300, 0);
    gradient.addColorStop(0, 'red');
    gradient.addColorStop(0.5, 'yellow');
    gradient.addColorStop(1, 'blue');
    
    // Fill with gradient
    ctx.fillStyle = gradient;
    ctx.fillRect(50, 50, 200, 100);
</script>

</body>
</html>

我们创建了一个从红到黄再到蓝色的水平渐变。createLinearGradient 方法定义了渐变方向。

使用 addColorStop 添加颜色停止点。然后,在绘制矩形之前,将渐变应用于填充样式。这创建了一个色彩鲜艳的渐变填充矩形。

具有不同样式的多个矩形

此示例演示了如何绘制具有各种样式的多个矩形。

index.html
<!DOCTYPE html>
<html>
<head>
    <title>Multiple Rectangles</title>
</head>
<body>

<canvas id="myCanvas" width="400" height="300"></canvas>

<script>
    const canvas = document.getElementById('myCanvas');
    const ctx = canvas.getContext('2d');
    
    // Filled rectangle
    ctx.fillStyle = 'rgba(255, 0, 0, 0.5)';
    ctx.fillRect(50, 50, 100, 100);
    
    // Stroked rectangle
    ctx.strokeStyle = 'blue';
    ctx.lineWidth = 3;
    ctx.strokeRect(200, 50, 100, 100);
    
    // Both filled and stroked
    ctx.fillStyle = 'green';
    ctx.strokeStyle = 'black';
    ctx.lineWidth = 5;
    ctx.fillRect(50, 200, 100, 50);
    ctx.strokeRect(50, 200, 100, 50);
    
    // Rounded rectangle (custom function)
    function roundRect(x, y, w, h, r) {
        ctx.beginPath();
        ctx.moveTo(x + r, y);
        ctx.lineTo(x + w - r, y);
        ctx.quadraticCurveTo(x + w, y, x + w, y + r);
        ctx.lineTo(x + w, y + h - r);
        ctx.quadraticCurveTo(x + w, y + h, x + w - r, y + h);
        ctx.lineTo(x + r, y + h);
        ctx.quadraticCurveTo(x, y + h, x, y + h - r);
        ctx.lineTo(x, y + r);
        ctx.quadraticCurveTo(x, y, x + r, y);
        ctx.closePath();
    }
    
    roundRect(200, 200, 150, 80, 20);
    ctx.fillStyle = 'purple';
    ctx.fill();
</script>

</body>
</html>

此示例显示了四种不同的矩形样式:一个半透明填充矩形、一个描边矩形、两者的组合以及一个圆角矩形。

圆角矩形是通过一个自定义函数创建的,该函数使用弯曲的角绘制路径。这演示了如何扩展基本的矩形功能。

来源

MDN Canvas 矩形文档

在本文中,我们探讨了在 HTML Canvas 上绘制矩形的各种技术。掌握这些方法对于在 Web 应用程序中创建 UI 元素和可视化至关重要。

作者

我的名字是 Jan Bodnar,我是一名充满激情的程序员,拥有丰富的编程经验。我自 2007 年以来一直在撰写编程文章。到目前为止,我已撰写了 1,400 多篇文章和 8 本电子书。我在教学编程方面拥有十多年的经验。

列出 所有 JS Canvas 教程