★Canvasリファレンス

私たちはカジノサイトを独自にレビューしています。当社のリンクを通じてサインアップすると、追加料金なしで当社に手数料が発生する場合があります。

context . setTransform(a, b, c, d, e, f) …… 現在の変換マトリックスをリセットして、変換マトリックスで変形する
Internet Explorer9
Firefox2Firefox3Firefox4
Google Chrome1Google Chrome2Google Chrome3Google Chrome4Google Chrome5Google Chrome6
Safari3Safari4Safari5
Opera9Opera10
広告



setTransform(a, b, c, d, e, f)メソッドは、現在の変換マトリックスをリセットして、変換マトリックスで変形する際に使用します。
変換マトリックスとは図形の座標を変換する計算式のことで、先に変換マトリックスを指定してから図形を指定すると、
後に続く図形の座標に変換マトリックスが適用されて図形が変形されます。

この変換マトリックスの行列式は以下のような配置になります。

a c e
b d f
0 0 1

行列式を図で説明1

setTransform(a, b, c, d, e, f)メソッドのそれぞれの引数は、
setTransform(伸縮x, 傾斜y, 傾斜x, 伸縮y, 移動x, 移動y)となります。
何も変形しない場合の引数の値は、setTransform(1, 0, 0, 1, 0, 0)となります。

行列式を図で説明2

setTransform()メソッドでは、
scale()
rotate()
translate()
をまとめて指定することができます。
rotate()は回転ですが、setTransform()の引数に三角関数を利用して伸縮と傾斜を組み合わせることで回転結果を得られます。
それぞれの個別メソッドとsetTransform()メソッドとの関係は以下の通りです。

  • scale(x, y)は、setTransform(x, 0, 0, y, 0, 0)と同じ
  • rotate(angle)は、setTransform(Math.cos(angle), Math.sin(angle), -Math.sin(angle), Math.cos(angle), 0, 0)と同じ
  • translate(x, y)は、setTransform(1, 0, 0, 1, x, y)と同じ

尚、同じような使い方をするメソッドに、transform(a, b, c, d, e, f)がありますが、
transform()が現在の変換マトリックスと掛け合わせて変換マトリックスを適用するのに対して、
setTransform()は現在の変換マトリックスをリセットしてから変換マトリックスを適用する点が異なります。

■変形を適用する際の注意点

変形を適用する場合には、先に変形を指定してから図形を描画するという順序になります。
変形を後から指定しても、先に描画した図形には変形が適用されないので注意してください。

複数の変形を適用する際には、指定順序を意識する必要があります。
例えば、拡大→回転→拡大の順序と、拡大→拡大→回転の順序では、それぞれの変形結果が異なる場合があります。
一例を挙げると、
「正方形の幅を2倍に拡大→幅を2倍に拡大→90度回転」では、幅が4倍の長方形が90度回転した状態(縦長の長方形)となりますが、
「正方形の幅を2倍に拡大→90度回転→幅を2倍に拡大」では、幅と高さがそれぞれ2倍の正方形となります。

複数の変形を適用する際には、実行する変形の順序とは逆順にソースを記述する必要があります。

■引数(値)の説明

setTransform(a, b, c, d, e, f)の引数の意味は、setTransform(伸縮x, 傾斜y, 傾斜x, 伸縮y, 移動x, 移動y)。
変形しない場合の値は、setTransform(1, 0, 0, 1, 0, 0)となる。

a
水平方向の伸縮倍数(変形しない場合は1)
b
垂直方向の傾斜率(変形しない場合は0)
c
水平方向の傾斜率(変形しない場合は0)
d
垂直方向の伸縮倍数(変形しない場合は1)
e
水平方向の移動距離(変形しない場合は0)
f
垂直方向の移動距離(変形しない場合は0)

■使用例

HTML + JavaScriptソース

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>canvasで図形を描く</title>
<script type="text/javascript">
<!--
function test() {
  //描画コンテキストの取得
  var canvas = document.getElementById('sample');
  if (canvas.getContext) {
    var context = canvas.getContext('2d');
    //ここに具体的な描画内容を指定する
    //左から20上から20の位置に幅50高さ50の輪郭の四角形を描く
    context.strokeRect(20,20,50,50);

    //引数の意味は、setTransform(伸縮x, 傾斜y, 傾斜x, 伸縮y, 移動x, 移動y)
    //垂直傾斜0.1・水平移動50・垂直移動50を指定した上で、
    //左から20上から20の位置に幅50高さ50の塗りつぶしの四角形を描く
    context.setTransform(1, 0.1, 0, 1, 50, 50);
    context.fillRect(20,20,50,50);
  }
}
//-->
</script>
</head>
<body onLoad="test()">
<h2>Canvasで図形を描く</h2>
<canvas width="300" height="150" id="sample" style="background-color:yellow;">
図形を表示するには、canvasタグをサポートしたブラウザが必要です。
</canvas>
</body>
</html>
↓↓↓

ブラウザ上の表示

Canvasで図形を描く


図形を表示するには、canvasタグをサポートしたブラウザが必要です。

■関連項目

<canvas> …… 図形を描くHTML5から追加
広告



山田 太郎
テック・リード
山田太郎は、ウェブ開発やグラフィックスプログラミングに10年以上の経験を持つテクノロジーの専門家です。特にHTML5 CanvasやJavaScript、インタラクティブメディアに精通しており、動的なユーザーインターフェースや最先端のウェブアプリケーションの開発に携わってきました。複雑な図形描画や画像操作、リアルタイムグラフィックスに関する知識が豊富で、ウェブ技術の限界を追求する開発者たちにとって頼りになる存在です。知識の共有に情熱を持ち、初心者からプロフェッショナルまで幅広く支援するため、技術フォーラムやブログにも積極的に貢献しています。

ギャンブルガイド もっと見る

カジノファインダー

どのカジノが自分に最適か分からないですか?

サインアップは必要なく、1 分以内に最適なブックメーカーを簡単に見つけることができます。
カジノを探す
Back
質問
Select one of the following options
{"is_any_tile":true}

どのカジノが自分に最適か分からないですか?

Back
Restart
やったー!
これはあなたの選択に基づいた最高のカジノです...
58 users signed up
もっと表示する