HTMLで行列(マトリックス)を使用してJSラジアルグラデーションを作成する方法
行列変換を使ったラジアルグラデーションとは
Canvasのコンテキストに対してスケール変換(行列変換)を適用することで、楕円形のラジアルグラデーションを作成できます。通常のcreateRadialGradient()メソッドは正円のグラデーションしか描画できませんが、コンテキストの変換マトリックスを操作することで、縦横比の異なるグラデーションも自由に表現可能になります。
実装コード
以下のコードを実行すると、行列を使ったJSラジアルグラデーションを作成できます。
var canvas1 = document.getElementById("canvas"); // 対象のキャンバスを特定するための変数
var ctx1 = canvas.getContext("2d"); // コンテキストが2Dであることを指定
var gradient1 = ctx1.createRadialGradient(
100 / horizontalScale, 100 / verticalScale, 100,
100 / horizontalScale, 100 / verticalScale, 0
); // 指定したキャンバスコンテキストでグラデーションを作成
gradient1.addColorStop(1, "green"); // グラデーションに緑を追加
gradient1.addColorStop(0, "red"); // グラデーションに赤を追加
ctx1.scale(horizontalScale, verticalScale); // コンテキストの行列を水平・垂直スケールに応じて縮小
ctx1.fillStyle = gradient; // グラデーションを描画
ctx1.fillRect(0, 0, 100 / horizontalScale, 100 / verticalScale); // スケールに合わせて矩形を伸縮
ctx1.setTransform(0, 1, 1, 0, 1, 1); // コンテキストの行列をリセットCSSの設定
キャンバスには背景色を設定しておくと、グラデーションが視覚的に確認しやすくなります。
canvas {
background-color: purple; /* キャンバスの背景色を紫に設定 */
}HTML要素
<canvas id="canvas" width="300" height="300"></canvas>コードのポイント解説
- createRadialGradient():始点円と終点円それぞれの中心座標と半径を指定して、ラジアルグラデーションを生成します。
- addColorStop():第1引数にはグラデーション上の位置(0〜1)、第2引数には色を指定します。
- scale():コンテキストの変換マトリックスを拡大・縮小することで、楕円形状のグラデーションを実現します。
- setTransform():変換マトリックスをリセットし、以降の描画処理へ影響が残らないようにします。
このように、スケール変換とラジアルグラデーションを組み合わせることで、柔軟な表現力のあるグラフィック描画が可能になります。ぜひ実際にコードを実行して、動きを確認してみてください。
-
HTMLでファイルアップロードボタンを作成する方法をわかりやすく解説
HTMLでファイルアップロードボタンを作成するには、<input>要素のtype属性に「file」を指定します。これにより、ユーザーが自分のPCやスマートフォンからファイルを選択してアップロードできるボタンが簡単に設置できます。 コード例 <!DOCTYPE html> <html> <head> <title>ファイルアップロードボタンの例</title> </head> <body> <h1>ファイルアップロードボタンの例</h1> <p>「ファイルを選択」ボ
-
HTMLでダウンロードリンクを作成する方法をわかりやすく解説
HTMLでダウンロードリンクを作成するには、<a>タグにdownload属性を追加します。この属性を指定すると、リンク先のファイルがブラウザで開かれる代わりに、クリックした時点でダウンロードされるようになります。コード例以下は、画像をクリックするとその画像ファイルがダウンロードされるサンプルコードです。<!DOCTYPE html> <html> <body> <h1>Download Link example</h1> <a href="https://i.picsum.photos/id/225/800