# CanvasRenderingContext2D.scale()

`CanvasRenderingContext2D``.scale()` 是 Canvas 2D API 根据 x 水平方向和 y 垂直方向，为canvas 单位添加缩放变换的方法。

## 语法

```void ctx.scale(x, y);
```

`x`

y

## 示例

### 使用 `scale` 方法

#### HTML

``````<canvas id="canvas"></canvas>
``````

#### JavaScript

The rectangle has a specified width of 8 and a height of 20. The transformation matrix scales it by 9x horizontally and by 3x vertically. Thus, its final size is a width of 72 and a height of 60.

Notice that its position on the canvas also changes. Since its specified corner is (10, 10), its rendered corner becomes (90, 30).

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

// Scaled rectangle
ctx.scale(9, 3);
ctx.fillStyle = 'red';
ctx.fillRect(10, 10, 8, 20);

// Reset current transformation matrix to the identity matrix
ctx.setTransform(1, 0, 0, 1, 0, 0);

// Non-scaled rectangle
ctx.fillStyle = 'gray';
ctx.fillRect(10, 10, 8, 20);``````

#### 结果

The scaled rectangle is red, and the non-scaled rectangle is gray.

### 使用 scale 水平或竖直翻转

Note that the call to `fillText()` specifies a negative x coordinate. This is to adjust for the negative scaling factor: `-280 * -1` becomes `280`, and text is drawn leftwards from that point.

#### HTML

``````<canvas id="canvas"></canvas>
``````

#### JavaScript

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

ctx.scale(-1, 1);
ctx.font = '48px serif';
ctx.fillText('Hello world!', -280, 90);
ctx.setTransform(1, 0, 0, 1, 0, 0);
``````

## 规范描述

Specification Status Comment
HTML Living Standard
CanvasRenderingContext2D.scale
Living Standard

## 浏览器兼容性

BCD tables only load in the browser