このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

CanvasRenderingContext2D: transform() メソッド

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.

CanvasRenderingContext2D.transform() はキャンバス 2D API のメソッドで、このAPIは、現在の座標変換をこのメソッドの引数で指定された行列で乗算します。これにより、コンテキストの変倍、回転、移動、歪めの座標変換を行うことができます。

メモ: setTransform() メソッドも参照してください。このメソッドは現在の変換を恒等行列にリセットし、その後 transform() を呼び出します。

構文

js
transform(a, b, c, d, e, f)

座標変換行列は [acebdf001]\left[ \begin{array}{ccc} a & c & e \ b & d & f \ 0 & 0 & 1 \end{array} \right] として記述されます。

引数

a (m11)

行列の 1 行目 1 列目のセルです。

b (m12)

行列の 2 行目 1 列目のセルです。

c (m21)

行列の 1 行目 2 列目のセルです。

d (m22)

行列の 2 行目 2 列目のセルです。

e (m41)

行列の 1 行目 3 列目のセルです。

f (m42)

行列の 2 行目 3 列目のセルです。

もともと (x,y)(x, y) の座標を持つ点があった場合、座標変換後は座標が (ax+cy+e,bx+dy+f)(ax + cy + e, bx + dy + f) となります。すなわち、

  • ef はコンテキストの水平方向および垂直方向の移動を制御します。
  • bc0 の場合、ad がコンテキストの水平方向および垂直方向の変倍を制御します。
  • ad1 の場合、bc はコンテキストの水平方向および垂直方向の歪めを制御します。

返値

なし (undefined)。

図形の歪め

この例では、矩形を垂直方向 (.2) と水平方向 (.8) の両方に歪ませています。倍率と平行移動は変更されません。

HTML

html
<canvas id="canvas"></canvas>

JavaScript

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

ctx.transform(1, 0.2, 0.8, 1, 0, 0);
ctx.fillRect(0, 0, 100, 100);

結果

仕様書

Specification
HTML
# dom-context-2d-transform-dev

ブラウザーの互換性

関連情報