CanvasRenderingContext2D:scale() 方法
Canvas 2D API 的CanvasRenderingContext2D.scale()
方法向画布单元添加水平和/或垂直缩放变换。
默认情况下,画布上的一个单位恰好是一个像素。缩放变换会修改此行为。例如,缩放因子为 0.5 会导致单位大小为 0.5 像素;因此,形状以一半的正常大小绘制。同样,缩放因子为 2.0 会增加单位大小,使一个单位变为两个像素;因此,形状以两倍的正常大小绘制。
语法
js
scale(x, y)
参数
返回值
无(undefined
)。
示例
缩放形状
此示例绘制了一个缩放后的矩形。然后绘制一个未缩放的矩形以进行比较。
HTML
html
<canvas id="canvas"></canvas>
JavaScript
矩形的指定宽度为 8,高度为 20。变换矩阵将其水平缩放 9 倍,垂直缩放 3 倍。因此,其最终大小为宽度 72 和高度 60。
请注意,它在画布上的位置也会发生变化。由于其指定的角为 (10, 10),因此其渲染的角变为 (90, 30)。
js
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);
结果
缩放后的矩形为红色,未缩放的矩形为灰色。
水平或垂直翻转
您可以使用 scale(-1, 1)
水平翻转上下文,使用 scale(1, -1)
垂直翻转上下文。在此示例中,单词“Hello world!”被水平翻转。
请注意,对 fillText()
的调用指定了一个负 x 坐标。这是为了适应负缩放因子:-280 * -1
变为 280
,文本从该点向左绘制。
HTML
html
<canvas id="canvas"></canvas>
JavaScript
js
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);
结果
规范
规范 |
---|
HTML 标准 # dom-context-2d-scale-dev |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。
另请参阅
- 定义此方法的接口:
CanvasRenderingContext2D